The document contains a series of nonsensical symbols and text fragments with no clear meaning. It includes programming language keywords and testing concepts like properties, mocking, concurrency, and metrics but does not form coherent sentences.
[Day16] ydkjs (scope) lexical scope review Ashe Li
The document describes the process of compiling and executing code. It involves:
1. A compiler interacting with different "managers" to declare variables and functions.
2. The JavaScript engine interacting with scope managers to retrieve values for variables and functions during execution.
3. Values being retrieved from different "buckets" and assigned to the identifiers.
Mirah is a small, fast JVM language that uses Ruby syntax but compiles to Java bytecode. It was created by Charles Oliver Nutter, the creator of JRuby, who wanted to write Java code using a language as expressive as Ruby. Mirah has Ruby's syntactic sugar but is statically typed and compiled like Java, without runtime modification. It uses type inference and macros to provide Ruby-like conveniences while compiling to a small footprint without needing a runtime library, making it suitable for mobile applications. Developers can get started with Mirah by installing it with RVM and writing code that looks like Ruby but compiles to Java classes.
Building native Android applications with Mirah and PindahNick Plante
Mirah is a Ruby-like language that compiles to Java bytecode, allowing Ruby developers to write Android apps without using Java. The document introduces Mirah and Pindah, a framework that makes it easier to develop Android apps in Mirah. It provides an example "Up or Down?" app that checks the status of websites and displays results. While Mirah offers a more Ruby-like syntax, it is still immature and tooling support needs improvement, making large Android app development challenging.
The document discusses code generation on the JVM using various tools and frameworks. It provides an overview of Lombok for generating Java boilerplate code, Groovy AST transformations, CodeNarc for static analysis, and Spock, GContracts, and Groovy++ for framework-oriented code generation. It also discusses generating code at compile time using abstract syntax trees.
The document discusses abstract syntax tree (AST) transformations in Groovy and Java. It covers several tools and techniques for AST transformations including Lombok, Groovy, CodeNarc, IntelliJ IDEA, Mirah macros, and how they allow generating code, performing static analysis, and rewriting code at compile time through analyzing and modifying the AST. The key topics are how these tools work by compiling code to an AST, analyzing and modifying the AST nodes, and sometimes generating source code from the transformed AST.
Object Trampoline: Why having not the object you want is what you need.Workhorse Computing
Overview of Trampoline Objects in Perl with examples for lazy construction, lazy module use, added sanity checks. This version includes corrections from the original presented at OSCON 2013 and comments.
This document provides an overview introduction to the Ruby programming language. It discusses what Ruby is, basic syntax, key features like being dynamically typed and object-oriented, implementations, applications, and the ecosystem. It also covers topics like variables, data types, control flow, methods, classes, and encapsulation. Code examples are provided to demonstrate various language constructs.
A short introduction to the perl debugger's basic commands for executing code, examining data structures. Includes examples of hardwiring breakpoints, tracing sections of code, debugging regexen.
This document summarizes a presentation given by Colin Gemmell, a developer who transitioned from .NET to Ruby on Rails. It discusses his motivations for the switch, compares the development environments and practices between the two platforms, and touches on some of the benefits and challenges of Rails development.
Plack is an interface for web request handlers that simplifies the interface and makes code more portable. It allows developers to focus on request handling rather than API specifics. Plack addresses issues with traditional CGI and mod_perl approaches by running handlers outside of servers in a standardized way. This encapsulation improves performance, debugging, and code reuse across different server implementations. Plack includes modules for common tasks like routing, middleware, and running PSGI applications on various web servers.
Kotlin advanced - language reference for android developersBartosz Kosarzycki
StxNext Lightning Talks - Mar 11, 2016
Kotlin Advanced - language reference for Android developers
This presentation contains the second talk on Kotlin language we had at STXNext. We try go deeper into language specifics and look at the positive impact new syntax can have on boilerplate removal and readability improvement.
Kotlin really shines in Android development when one looks at “Enum translation”, “Extension functions”, “SAM conversions”, “Infix notation”, “Closures” and “Fluent interfaces” applied to lists. The talk, however, compares language-specifics of Java & Kotlin in terms of “Type Variance”, “Generics” and “IDE tools” as well.
We present real-world example based on Stx-Insider project written in Kotlin which incorporates Dagger 2, Kotterknife, Retrofit2 and is composed of 5+ Activities.
Full agenda
Live templates
Enum translation
Calling extension functions from Kotlin/Java
Constructors with backing fields
Warnings
F-bound polymorphism
Variance (Covariance/Contravariance)
Variance comparison in Kotlin/Java/Scala
Annotation processing - KAPT
SAM conversions
Type equality
Lambda vs Closure
Reified generics
Fluent interfaces
Infix notation
Static extension methods in Kotlin
Generic types
Sealed classes
Dokka - documentation in Kotlin
J2K converter
Real-world example
Reflection
Presentation is accompanied with an example project (StxInsider):
https://github.com/kosiara/stx-insider
Building a Perl5 smoketest environment in Docker using CPAN::Reporter::Smoker. Includes an overview of "smoke testing", shell commands to contstruct a hybrid environment with underlying O/S image and data volumes for /opt, /var/lib/CPAN. This allows maintaining the Perly smoke environemnt without having to rebuild it.
A few general pointers for Perl programmers starting out to write tests using Perl6. This describes a few of the differences in handling arrays vs. hashes, comparing objects, flattening, and value vs. immutable object contents.
Short introduction to the basics of Perl testing and some resources for further reading. Includes basics of Test::Simple, Test::More, using Inline for multi-language testing, testing coverage, testing tests.
High Performance web apps in Om, React and ClojureScriptLeonardo Borges
The document discusses using Om and React for building high performance web user interfaces. It begins with an overview of React, including how it uses virtual DOM and efficient diff algorithms. It then introduces Om as a ClojureScript interface for React that allows leveraging immutable data structures for even faster rendering. A basic counter component is demonstrated in both React JSX and equivalent Om. Larger examples show building reusable editable components and an app with speakers/sessions data and undo functionality using Om.
This document summarizes Hamlet D'Arcy's presentation on AST transformations using tools like Lombok, Groovy, CodeNarc, and Mirah. It discusses how these tools allow manipulating abstract syntax trees to add functionality like automatic property generation, static analysis, and embedded domain-specific languages. Local AST transformations are performed without changing bytecode or requiring new semantics. Type checking can also be added through transformations. Mirah compiles to pure Java classes without additional syntax.
This document summarizes a presentation about using algebraic structures like functors, applicative functors and monads to build asynchronous and concurrent programs in Clojure. It discusses using the imminent library to handle futures and parallelism in a more declarative way compared to core.async. Examples are provided that show how to aggregate data from multiple asynchronous sources using these concepts. It also touches on handling exceptions in an asynchronous setting.
The document discusses code generation and abstract syntax tree (AST) transformations. It provides an overview of Project Lombok, a Java library that generates boilerplate code through annotation processing and AST transformations. It also discusses how to analyze and transform code by visiting and rewriting AST nodes, giving examples of checking for null checks and instanceof expressions.
This document discusses strategies for testing code that is difficult or seemingly impossible to test, known as "untestable code". It provides examples of how to address issues like object construction that relies on external resources, dependencies, private methods, and language limitations. Specific techniques include using autoloading, custom stream wrappers, mocking databases/web services, reflection, and generative programming with frames to dynamically generate test and production code. The overall message is that with the right approaches, even legacy or "untestable" code can be made testable.
Develop your next app with kotlin @ AndroidMakersFr 2017Arnaud Giuliani
Kotlin is a fully interoperable programming language for building Android and multiplatform applications. It is statically typed, concise, and designed to interoperate seamlessly with Java. Kotlin aims to combine the best of both object-oriented and functional programming, and provides features to write safer and more concise code compared to Java, such as null safety, type inference, and extension functions. The document provides an overview of Kotlin's features and how it compares to other languages like Java and Swift, and demonstrates how to set up a Kotlin project using Gradle build system.
This document introduces Kotlin, a statically typed programming language that runs on the Java Virtual Machine (JVM). It summarizes Kotlin's key features like concise syntax, null safety, interoperability with Java, and extension functions. The document also provides examples of Kotlin code for functions, properties, lambdas, and higher-order functions. It describes how Kotlin can be used for Android development and introduces libraries like Anko that simplify common Android tasks.
Performance benchmarks are all too often inaccurate. This talk introduces some things to look for in setting up and running benchmarks to make them effective.
The Jetbrain's Kotlin language cheat sheet, created by ekito and launched for the Toulouse's devfest - https://www.ekito.fr/people/kotlin-cheat-sheet/
This paper helps you keep the main feature of the Kotlin language, under the hand. Just download it & print it !
This document summarizes new features and improvements planned for the Gatling load testing tool. Key points include:
- Adopting an actor model to represent scenario workflows as sequences of asynchronous actors.
- Refactoring the expression language to type check values and return failures instead of exceptions.
- Improving resource fetching to better approximate how browsers parallelize asset loading instead of sequential requests.
- Enhancing checks like regular expressions to support returning tuples instead of just strings.
- Simplifying templating to use string interpolation and external template files with expression language instead of Scalate.
The document outlines an agenda for a workshop on developing a weather app with Kotlin. The schedule includes introductions to Kotlin, a project presentation and setup, and two hands-on sessions. There will be a coffee break in between the introductory and hands-on portions. Attendees will learn about Kotlin features like type inference, null safety, collections, and Android extensions and apply them by developing the weather app.
TMPA-2015: Kotlin: From Null Dereference to Smart CastsIosif Itkin
This document discusses Kotlin, a statically typed programming language that targets the JVM and JavaScript. It was developed by JetBrains since 2011 and is now open-source. Kotlin is null-safe, object-oriented, and compatible with both Java and Scala. It provides features like type inference, higher-order functions, and extension functions while being simpler than Scala.
Bytecode manipulation with Javassist and ASMashleypuls
The document discusses a presentation titled "Living in the Matrix with Bytecode Manipulation". It provides an overview of bytecode and frameworks for manipulating bytecode. Specifically, it discusses what bytecode is, reasons for manipulating bytecode, frameworks for doing so, and examines logging as an example use case. The presentation outlines how to add logging to methods by annotating them and transforming the bytecode at runtime using a Java agent.
perl often doesn't get updated because people don't have a way to know if their current code works with the new one. The problem is that they lack unit tests. This talk describes how simple it is to generate unit tests with Perl and shell, use them to automate solving problems like missing modules, and test a complete code base.
This document summarizes a presentation given by Colin Gemmell, a developer who transitioned from .NET to Ruby on Rails. It discusses his motivations for the switch, compares the development environments and practices between the two platforms, and touches on some of the benefits and challenges of Rails development.
Plack is an interface for web request handlers that simplifies the interface and makes code more portable. It allows developers to focus on request handling rather than API specifics. Plack addresses issues with traditional CGI and mod_perl approaches by running handlers outside of servers in a standardized way. This encapsulation improves performance, debugging, and code reuse across different server implementations. Plack includes modules for common tasks like routing, middleware, and running PSGI applications on various web servers.
Kotlin advanced - language reference for android developersBartosz Kosarzycki
StxNext Lightning Talks - Mar 11, 2016
Kotlin Advanced - language reference for Android developers
This presentation contains the second talk on Kotlin language we had at STXNext. We try go deeper into language specifics and look at the positive impact new syntax can have on boilerplate removal and readability improvement.
Kotlin really shines in Android development when one looks at “Enum translation”, “Extension functions”, “SAM conversions”, “Infix notation”, “Closures” and “Fluent interfaces” applied to lists. The talk, however, compares language-specifics of Java & Kotlin in terms of “Type Variance”, “Generics” and “IDE tools” as well.
We present real-world example based on Stx-Insider project written in Kotlin which incorporates Dagger 2, Kotterknife, Retrofit2 and is composed of 5+ Activities.
Full agenda
Live templates
Enum translation
Calling extension functions from Kotlin/Java
Constructors with backing fields
Warnings
F-bound polymorphism
Variance (Covariance/Contravariance)
Variance comparison in Kotlin/Java/Scala
Annotation processing - KAPT
SAM conversions
Type equality
Lambda vs Closure
Reified generics
Fluent interfaces
Infix notation
Static extension methods in Kotlin
Generic types
Sealed classes
Dokka - documentation in Kotlin
J2K converter
Real-world example
Reflection
Presentation is accompanied with an example project (StxInsider):
https://github.com/kosiara/stx-insider
Building a Perl5 smoketest environment in Docker using CPAN::Reporter::Smoker. Includes an overview of "smoke testing", shell commands to contstruct a hybrid environment with underlying O/S image and data volumes for /opt, /var/lib/CPAN. This allows maintaining the Perly smoke environemnt without having to rebuild it.
A few general pointers for Perl programmers starting out to write tests using Perl6. This describes a few of the differences in handling arrays vs. hashes, comparing objects, flattening, and value vs. immutable object contents.
Short introduction to the basics of Perl testing and some resources for further reading. Includes basics of Test::Simple, Test::More, using Inline for multi-language testing, testing coverage, testing tests.
High Performance web apps in Om, React and ClojureScriptLeonardo Borges
The document discusses using Om and React for building high performance web user interfaces. It begins with an overview of React, including how it uses virtual DOM and efficient diff algorithms. It then introduces Om as a ClojureScript interface for React that allows leveraging immutable data structures for even faster rendering. A basic counter component is demonstrated in both React JSX and equivalent Om. Larger examples show building reusable editable components and an app with speakers/sessions data and undo functionality using Om.
This document summarizes Hamlet D'Arcy's presentation on AST transformations using tools like Lombok, Groovy, CodeNarc, and Mirah. It discusses how these tools allow manipulating abstract syntax trees to add functionality like automatic property generation, static analysis, and embedded domain-specific languages. Local AST transformations are performed without changing bytecode or requiring new semantics. Type checking can also be added through transformations. Mirah compiles to pure Java classes without additional syntax.
This document summarizes a presentation about using algebraic structures like functors, applicative functors and monads to build asynchronous and concurrent programs in Clojure. It discusses using the imminent library to handle futures and parallelism in a more declarative way compared to core.async. Examples are provided that show how to aggregate data from multiple asynchronous sources using these concepts. It also touches on handling exceptions in an asynchronous setting.
The document discusses code generation and abstract syntax tree (AST) transformations. It provides an overview of Project Lombok, a Java library that generates boilerplate code through annotation processing and AST transformations. It also discusses how to analyze and transform code by visiting and rewriting AST nodes, giving examples of checking for null checks and instanceof expressions.
This document discusses strategies for testing code that is difficult or seemingly impossible to test, known as "untestable code". It provides examples of how to address issues like object construction that relies on external resources, dependencies, private methods, and language limitations. Specific techniques include using autoloading, custom stream wrappers, mocking databases/web services, reflection, and generative programming with frames to dynamically generate test and production code. The overall message is that with the right approaches, even legacy or "untestable" code can be made testable.
Develop your next app with kotlin @ AndroidMakersFr 2017Arnaud Giuliani
Kotlin is a fully interoperable programming language for building Android and multiplatform applications. It is statically typed, concise, and designed to interoperate seamlessly with Java. Kotlin aims to combine the best of both object-oriented and functional programming, and provides features to write safer and more concise code compared to Java, such as null safety, type inference, and extension functions. The document provides an overview of Kotlin's features and how it compares to other languages like Java and Swift, and demonstrates how to set up a Kotlin project using Gradle build system.
This document introduces Kotlin, a statically typed programming language that runs on the Java Virtual Machine (JVM). It summarizes Kotlin's key features like concise syntax, null safety, interoperability with Java, and extension functions. The document also provides examples of Kotlin code for functions, properties, lambdas, and higher-order functions. It describes how Kotlin can be used for Android development and introduces libraries like Anko that simplify common Android tasks.
Performance benchmarks are all too often inaccurate. This talk introduces some things to look for in setting up and running benchmarks to make them effective.
The Jetbrain's Kotlin language cheat sheet, created by ekito and launched for the Toulouse's devfest - https://www.ekito.fr/people/kotlin-cheat-sheet/
This paper helps you keep the main feature of the Kotlin language, under the hand. Just download it & print it !
This document summarizes new features and improvements planned for the Gatling load testing tool. Key points include:
- Adopting an actor model to represent scenario workflows as sequences of asynchronous actors.
- Refactoring the expression language to type check values and return failures instead of exceptions.
- Improving resource fetching to better approximate how browsers parallelize asset loading instead of sequential requests.
- Enhancing checks like regular expressions to support returning tuples instead of just strings.
- Simplifying templating to use string interpolation and external template files with expression language instead of Scalate.
The document outlines an agenda for a workshop on developing a weather app with Kotlin. The schedule includes introductions to Kotlin, a project presentation and setup, and two hands-on sessions. There will be a coffee break in between the introductory and hands-on portions. Attendees will learn about Kotlin features like type inference, null safety, collections, and Android extensions and apply them by developing the weather app.
TMPA-2015: Kotlin: From Null Dereference to Smart CastsIosif Itkin
This document discusses Kotlin, a statically typed programming language that targets the JVM and JavaScript. It was developed by JetBrains since 2011 and is now open-source. Kotlin is null-safe, object-oriented, and compatible with both Java and Scala. It provides features like type inference, higher-order functions, and extension functions while being simpler than Scala.
Bytecode manipulation with Javassist and ASMashleypuls
The document discusses a presentation titled "Living in the Matrix with Bytecode Manipulation". It provides an overview of bytecode and frameworks for manipulating bytecode. Specifically, it discusses what bytecode is, reasons for manipulating bytecode, frameworks for doing so, and examines logging as an example use case. The presentation outlines how to add logging to methods by annotating them and transforming the bytecode at runtime using a Java agent.
perl often doesn't get updated because people don't have a way to know if their current code works with the new one. The problem is that they lack unit tests. This talk describes how simple it is to generate unit tests with Perl and shell, use them to automate solving problems like missing modules, and test a complete code base.
- JavaScript was created in 1995 by Brandon Eich and was originally called LiveScript. It was renamed to JavaScript to capitalize on the popularity of Java, though the two languages are unrelated.
- JavaScript is an interpreted, prototype-based scripting language that is commonly used for client-side web development but can also be used for server-side applications and other programs. It has dynamic typing and supports functions as first-class objects.
- The document discusses JavaScript syntax including variables, numbers, strings, comments, control flow statements like if/else and loops, and functions. It also covers the Rhino runtime environment for running JavaScript without a browser.
CoffeeScript is a programming language that compiles to JavaScript. It exposes the good parts of JavaScript in a simpler syntax that is influenced by Ruby and Python. CoffeeScript code is written with the .coffee extension and compiles to JavaScript that can run in browsers. The CoffeeScript syntax omits parentheses and curly braces where possible to make the code look cleaner. It supports features like destructuring assignment, fat arrow functions, splats, and array comprehensions that make code more concise.
The document discusses the lifecycle of code under test, including defining inputs and outputs, initial testing with positive and negative cases, handling bugs, refactoring code, adding abstraction, how future work may affect tests, and handling legacy code. It provides an example of a function to add two strings, injecting a bug, and walking through testing the code at different stages of the lifecycle from initial testing to refactoring and abstraction.
Presentation for the kick-off meeting for the meetup:
"Reactive Programming Enthusiasts Denver". This talks about concurrency, non-blocking, scala, futures, akka, play framework, and other concepts of reactive programming.
Scala Programming for Semantic Web Developers ESWC Semdev2015Jean-Paul Calbimonte
Scalable and Reactive Programming for Semantic Web Developers discusses using Scala for semantic web development. Key points include:
- Scala allows for more concise RDF code compared to Java through features like type inference and implicit parameters.
- The actor model and futures in Scala enable asynchronous and reactive programming for RDF streams and SPARQL queries.
- OWL API reasoning with ontologies can be done more clearly in Scala through implicit classes that simplify common operations.
Computational Techniques for the Statistical Analysis of Big Data in Rherbps10
The document describes techniques for improving the computational performance of statistical analysis of big data in R. It uses as a case study the rlme package for rank-based regression of nested effects models. The workflow involves identifying bottlenecks, rewriting algorithms, benchmarking versions, and testing. Examples include replacing sorting with a faster C++ selection algorithm for the Wilcoxon Tau estimator, vectorizing a pairwise function, and preallocating memory for a covariance matrix calculation. The document suggests future directions like parallelization using MPI and GPUs to further optimize R for big data applications.
The document discusses challenges in implementing a dynamic language like JavaScript on the Java Virtual Machine (JVM). Some key points:
- Nashorn is a JavaScript runtime written in Java that generates JVM bytecode, aiming to be 2-10x faster than previous solutions like Rhino.
- Compiling JavaScript to JVM bytecode is difficult as JavaScript has dynamic types, runtime changes, and number representations that don't map cleanly to Java's static types.
- Nashorn uses static analysis to infer types where possible and optimize for primitive number representations, but this only goes so far with JavaScript's dynamic nature.
- As JavaScript code changes, Nashorn may need to transition to more dynamic, adaptive and optimistic techniques
The $path to knowledge: What little it take to unit-test Perl.Workhorse Computing
Metadata-driven lazyness, Perl, and Jenkins provide a nice mix for automated testing. With Perl the only thing required to start testing is a files path, from there the possibilities are endless. Using Symbol's qualify_to_ref makes it easy to validate @EXPORT & @EXPORT_OK, knowing the path makes it easy to use "perl -wc" to get diagnostics.
The beautiful thing is all of it can be lazy... er, "automated". And repeatable. And simple.
The document discusses various approaches for leveraging parallelism and concurrency including multithreading, fork/join, actors, dataflow, and software transactional memory. It notes that while multithreading is challenging, other approaches like actors, dataflow, and STM can allow for writing concurrency-agnostic code. It promotes the GPars library for its implementations of various parallel and concurrent programming abstractions in Java and Groovy.
Javascript was originally released in 1995 as a scripting language for web browsers. It has since evolved significantly with new versions like ES6/ES7. Javascript is a dynamic, prototype-based language that supports object-oriented, imperative, and functional programming. It is used for both client-side development in browsers and server-side development with Node.js. New features in ES6 include classes, arrow functions, template literals, and modules. Typescript offers additional type safety but compiles to Javascript. Popular Javascript frameworks include React, Angular, and Vue. With nearly 300,000 packages, its large ecosystem and performance have made Javascript one of the most important and widely used programming languages.
This document discusses property-based testing using ScalaCheck. It introduces ScalaCheck as a tool for checking properties on random datasets generated by generators. Properties are logical statements that functions must satisfy, expressed using quantifiers and assertions. Generators are used to generate random test data, and built-in generators as well as custom generators are described. The document provides examples of using generators to test properties and discusses features like collecting generated values, classifying results, and stateful testing. Advantages and limitations of property-based testing are also summarized.
Async Redux Actions With RxJS - React Rally 2016Ben Lesh
Redux-observable allows combining RxJS and Redux by introducing Epics. Epics are Observable streams that handle asynchronous logic in response to Redux actions. This avoids callback hell and enables features like cancellation. An Epic takes an action stream, performs asynchronous operations like AJAX calls using RxJS, and dispatches result actions. This keeps Redux synchronous while managing complex async flows in a declarative and reusable way.
Designing with Groovy Traits - Gr8Conf IndiaNaresha K
The document discusses using traits in Groovy to provide reusable behaviors and properties to classes without relying on inheritance. It describes how traits allow for mixing in multiple capabilities, overriding trait methods, implementing interfaces, declaring abstract methods, and having state. Traits can extend other traits and resolve conflicts using finer control. Traits also allow applying behaviors at runtime and composing common fields. Examples demonstrate composing user context, auditing objects, chaining approvals, and more.
This document provides an overview of Perl testing with Test::Simple and Test::More. It discusses why testing is important, basic tests with ok(), and more advanced matching and behavior tests using functions like is(), like(), can_ok(), and skip(). It also covers controlling test flow with functions like diag(), pass(), and fail(). The goal is to introduce Perl testing and help readers feel comfortable writing and using tests.
This document provides an overview of Perl testing with Test::Simple and Test::More. It discusses why testing is important, basic tests with ok(), and more advanced matching functions like is(), like(), and can_ok() provided by Test::More. It also covers controlling test flow using skip(), todo(), diag(), pass(), and fail(). The goal is to introduce Perl testing and help readers feel comfortable writing and using tests.
This document summarizes advanced Akka features presented by Martin Kanters and Johan Janssen. It covers local and remote actors, scheduling, clustering, routing, cluster singletons, sharding, persistence, Akka HTTP, and finite state machines. The presentation introduces these features and provides examples to illustrate how they can be used with Akka.
A better version can be found at https://app.box.com/s/8zuk8yd4x9m7rbvinkb0xztz17x6xoqj
This is the slide for a presentation at Golang Melbourne meetup.
The document discusses strategies for reducing "Red", which refers to work in progress or unfinished tasks. It provides examples of refactoring patterns like parallel change and narrowed change that can be used to limit Red. It emphasizes measuring and visualizing Red to understand its causes and learn from tests. Reducing context switching and using small batch sizes are advised. Refactoring code incrementally using techniques like extracting methods and removing control flags is recommended to introduce changes gradually.
The document discusses testing software and measuring results in red, including works in progress on limiting, measuring, and visualizing red tests. It addresses whether those involved are professionals and learning from test metrics. URLs are provided for coding dojos, refactoring catalogs, and the author's Twitter and email.
The document discusses limiting work in progress (WIP) or "Red" by measuring and visualizing it. Red refers to tasks that are not completed and in a work in progress state. It provides several patterns for fighting Red like parallel change, narrowed change, sequence change and graceful retreat. It emphasizes measuring Red to learn from test metrics and adapt practices accordingly to keep Red limited and work in smaller batch sizes.
The document discusses the rules and concepts of the board game Go. It outlines four key rules: Capture, where a player removes opponent's stones with no liberties; Suicide, where a player cannot place a stone that would result in their own stones being captured; Ko, where a player cannot recreate the exact same board position as their previous move; and Ending, where the game ends when both players have consecutively passed. It also provides examples of using Cucumber to define scenarios representing the rules of Go in a behavior-driven development style.
RedLearn is a test metric recording service that learns from test results to help teams run tests smarter. It analyzes performance, failure rates, change rates, and flickering tests to identify refactoring opportunities. Users can contact Joseph Wilk at [email protected] to learn more about how RedLearn works and how it can help teams improve their testing processes.
Acceptance testing in the land of the startupJoseph Wilk
Acceptance testing is important for startups to measure that software is meeting business needs. The document discusses Cucumber as a behavior-driven development tool for writing acceptance tests in plain text. It provides examples of Cucumber features and scenarios. It also covers best practices like dividing tests across different parts of the system, dealing with flakiness, and limiting test runs with tags.
The document outlines an approach for writing self-help patterns using cucumbers. It includes brainstorming features and organizing them by stakeholders. Goals are to learn pattern writing approaches and techniques. Sections provide guidance on what makes good patterns, including being understandable and solving natural problems. Examples are given for organizing cucumber features by output and conversation. The process involves brainstorming, organizing, and reviewing patterns.
Music Hack Day Boston was an event organized by Joseph Wilk. The event brought together musicians, artists, and technologists to collaborate on new music and audio projects over a single day. Details about the event were sparse, containing only the organizer's name and the location of Boston.
Rocket Fuelled Cucumbers discusses strategies for dealing with slow cucumber test suites, including:
- Using Spork to preload support code to speed up test runs
- Tagging tests to run focused subsets based on features, filenames, or tags
- Distributing tests across multiple servers using Testjour to parallelize testing
- Looking to cloud providers like EC2 to gain additional hardware resources
- Dividing applications and tests along service boundaries to isolate components
The document discusses Cucumber, a tool for writing acceptance tests in a business-readable domain-specific language called Gherkin. It touches on how Cucumber supports over 28 languages by compiling Gherkin grammars into the target language. It also provides examples of tagging scenarios and features in Cucumber to enable focused testing. Finally, it recommends further reading resources for learning more about Cucumber.
The document discusses using Cucumber to improve communication with customers and users. It mentions that Cucumber provides a language to describe features in plain text which can then be compiled into code to automate testing and ensure acceptance criteria are met. It also notes that Cucumber supports over 28 languages to describe tests in a natural language familiar to both customers and developers.
The document discusses intelligent workflow management systems (iWFMS) as an improvement over traditional workflow management systems (WFMS). An iWFMS uses artificial intelligence planning techniques like event calculus to better handle new situations and requirements. It describes an iWFMS developed for HTML form systems using event calculus planning and a hospital drug prescription model as an example workflow. The iWFMS architecture incorporates logic programming to define workflows and handle changes more effectively than conventional WFMS.
Outside-in Development with Cucumber and RspecJoseph Wilk
Talk given by Joseph Wilk at Scotland on Rails 2009. Examines how Cucumber and Rspec fit together in the testing workflow, how and why Cucumber is useful and how it works. Walks through a simple example based on renting DVDs showing how to use Cucumber and some of the best practices. Looks at how Webrat can drive Selenium to in-turn drive Cucumber features through the browser.
The document discusses various tools for testing Ruby code including RSpec for unit testing objects, Cucumber for behavior-driven development, Webrat for acceptance testing web applications, and others. It provides examples of using RSpec to test objects, Cucumber features and scenarios, and measuring test coverage with tools like Rcov. The document also briefly discusses more advanced testing techniques like profile testing code with Spec Profle, mutating code to cause test failures with Heckle, and potential future testing tools.
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxAnoop Ashok
In today's fast-paced retail environment, efficiency is key. Every minute counts, and every penny matters. One tool that can significantly boost your store's efficiency is a well-executed planogram. These visual merchandising blueprints not only enhance store layouts but also save time and money in the process.
HCL Nomad Web – Best Practices und Verwaltung von Multiuser-Umgebungenpanagenda
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-und-verwaltung-von-multiuser-umgebungen/
HCL Nomad Web wird als die nächste Generation des HCL Notes-Clients gefeiert und bietet zahlreiche Vorteile, wie die Beseitigung des Bedarfs an Paketierung, Verteilung und Installation. Nomad Web-Client-Updates werden “automatisch” im Hintergrund installiert, was den administrativen Aufwand im Vergleich zu traditionellen HCL Notes-Clients erheblich reduziert. Allerdings stellt die Fehlerbehebung in Nomad Web im Vergleich zum Notes-Client einzigartige Herausforderungen dar.
Begleiten Sie Christoph und Marc, während sie demonstrieren, wie der Fehlerbehebungsprozess in HCL Nomad Web vereinfacht werden kann, um eine reibungslose und effiziente Benutzererfahrung zu gewährleisten.
In diesem Webinar werden wir effektive Strategien zur Diagnose und Lösung häufiger Probleme in HCL Nomad Web untersuchen, einschließlich
- Zugriff auf die Konsole
- Auffinden und Interpretieren von Protokolldateien
- Zugriff auf den Datenordner im Cache des Browsers (unter Verwendung von OPFS)
- Verständnis der Unterschiede zwischen Einzel- und Mehrbenutzerszenarien
- Nutzung der Client Clocking-Funktion
This is the keynote of the Into the Box conference, highlighting the release of the BoxLang JVM language, its key enhancements, and its vision for the future.
AI EngineHost Review: Revolutionary USA Datacenter-Based Hosting with NVIDIA ...SOFTTECHHUB
I started my online journey with several hosting services before stumbling upon Ai EngineHost. At first, the idea of paying one fee and getting lifetime access seemed too good to pass up. The platform is built on reliable US-based servers, ensuring your projects run at high speeds and remain safe. Let me take you step by step through its benefits and features as I explain why this hosting solution is a perfect fit for digital entrepreneurs.
Mobile App Development Company in Saudi ArabiaSteve Jonas
EmizenTech is a globally recognized software development company, proudly serving businesses since 2013. With over 11+ years of industry experience and a team of 200+ skilled professionals, we have successfully delivered 1200+ projects across various sectors. As a leading Mobile App Development Company In Saudi Arabia we offer end-to-end solutions for iOS, Android, and cross-platform applications. Our apps are known for their user-friendly interfaces, scalability, high performance, and strong security features. We tailor each mobile application to meet the unique needs of different industries, ensuring a seamless user experience. EmizenTech is committed to turning your vision into a powerful digital product that drives growth, innovation, and long-term success in the competitive mobile landscape of Saudi Arabia.
What is Model Context Protocol(MCP) - The new technology for communication bw...Vishnu Singh Chundawat
The MCP (Model Context Protocol) is a framework designed to manage context and interaction within complex systems. This SlideShare presentation will provide a detailed overview of the MCP Model, its applications, and how it plays a crucial role in improving communication and decision-making in distributed systems. We will explore the key concepts behind the protocol, including the importance of context, data management, and how this model enhances system adaptability and responsiveness. Ideal for software developers, system architects, and IT professionals, this presentation will offer valuable insights into how the MCP Model can streamline workflows, improve efficiency, and create more intuitive systems for a wide range of use cases.
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...Alan Dix
Talk at the final event of Data Fusion Dynamics: A Collaborative UK-Saudi Initiative in Cybersecurity and Artificial Intelligence funded by the British Council UK-Saudi Challenge Fund 2024, Cardiff Metropolitan University, 29th April 2025
https://alandix.com/academic/talks/CMet2025-AI-Changes-Everything/
Is AI just another technology, or does it fundamentally change the way we live and think?
Every technology has a direct impact with micro-ethical consequences, some good, some bad. However more profound are the ways in which some technologies reshape the very fabric of society with macro-ethical impacts. The invention of the stirrup revolutionised mounted combat, but as a side effect gave rise to the feudal system, which still shapes politics today. The internal combustion engine offers personal freedom and creates pollution, but has also transformed the nature of urban planning and international trade. When we look at AI the micro-ethical issues, such as bias, are most obvious, but the macro-ethical challenges may be greater.
At a micro-ethical level AI has the potential to deepen social, ethnic and gender bias, issues I have warned about since the early 1990s! It is also being used increasingly on the battlefield. However, it also offers amazing opportunities in health and educations, as the recent Nobel prizes for the developers of AlphaFold illustrate. More radically, the need to encode ethics acts as a mirror to surface essential ethical problems and conflicts.
At the macro-ethical level, by the early 2000s digital technology had already begun to undermine sovereignty (e.g. gambling), market economics (through network effects and emergent monopolies), and the very meaning of money. Modern AI is the child of big data, big computation and ultimately big business, intensifying the inherent tendency of digital technology to concentrate power. AI is already unravelling the fundamentals of the social, political and economic world around us, but this is a world that needs radical reimagining to overcome the global environmental and human challenges that confront us. Our challenge is whether to let the threads fall as they may, or to use them to weave a better future.
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfSoftware Company
Explore the benefits and features of advanced logistics management software for businesses in Riyadh. This guide delves into the latest technologies, from real-time tracking and route optimization to warehouse management and inventory control, helping businesses streamline their logistics operations and reduce costs. Learn how implementing the right software solution can enhance efficiency, improve customer satisfaction, and provide a competitive edge in the growing logistics sector of Riyadh.
Artificial Intelligence is providing benefits in many areas of work within the heritage sector, from image analysis, to ideas generation, and new research tools. However, it is more critical than ever for people, with analogue intelligence, to ensure the integrity and ethical use of AI. Including real people can improve the use of AI by identifying potential biases, cross-checking results, refining workflows, and providing contextual relevance to AI-driven results.
News about the impact of AI often paints a rosy picture. In practice, there are many potential pitfalls. This presentation discusses these issues and looks at the role of analogue intelligence and analogue interfaces in providing the best results to our audiences. How do we deal with factually incorrect results? How do we get content generated that better reflects the diversity of our communities? What roles are there for physical, in-person experiences in the digital world?
TrsLabs - Fintech Product & Business ConsultingTrs Labs
Hybrid Growth Mandate Model with TrsLabs
Strategic Investments, Inorganic Growth, Business Model Pivoting are critical activities that business don't do/change everyday. In cases like this, it may benefit your business to choose a temporary external consultant.
An unbiased plan driven by clearcut deliverables, market dynamics and without the influence of your internal office equations empower business leaders to make right choices.
Getting things done within a budget within a timeframe is key to Growing Business - No matter whether you are a start-up or a big company
Talk to us & Unlock the competitive advantage
Generative Artificial Intelligence (GenAI) in BusinessDr. Tathagat Varma
My talk for the Indian School of Business (ISB) Emerging Leaders Program Cohort 9. In this talk, I discussed key issues around adoption of GenAI in business - benefits, opportunities and limitations. I also discussed how my research on Theory of Cognitive Chasms helps address some of these issues
Big Data Analytics Quick Research Guide by Arthur MorganArthur Morgan
This is a Quick Research Guide (QRG).
QRGs include the following:
- A brief, high-level overview of the QRG topic.
- A milestone timeline for the QRG topic.
- Links to various free online resource materials to provide a deeper dive into the QRG topic.
- Conclusion and a recommendation for at least two books available in the SJPL system on the QRG topic.
QRGs planned for the series:
- Artificial Intelligence QRG
- Quantum Computing QRG
- Big Data Analytics QRG
- Spacecraft Guidance, Navigation & Control QRG (coming 2026)
- UK Home Computing & The Birth of ARM QRG (coming 2027)
Any questions or comments?
- Please contact Arthur Morgan at [email protected].
100% human made.
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPathCommunity
Join this UiPath Community Berlin meetup to explore the Orchestrator API, Swagger interface, and the Test Manager API. Learn how to leverage these tools to streamline automation, enhance testing, and integrate more efficiently with UiPath. Perfect for developers, testers, and automation enthusiasts!
📕 Agenda
Welcome & Introductions
Orchestrator API Overview
Exploring the Swagger Interface
Test Manager API Highlights
Streamlining Automation & Testing with APIs (Demo)
Q&A and Open Discussion
Perfect for developers, testers, and automation enthusiasts!
👉 Join our UiPath Community Berlin chapter: https://community.uipath.com/berlin/
This session streamed live on April 29, 2025, 18:00 CET.
Check out all our upcoming UiPath Community sessions at https://community.uipath.com/events/.
Book industry standards are evolving rapidly. In the first part of this session, we’ll share an overview of key developments from 2024 and the early months of 2025. Then, BookNet’s resident standards expert, Tom Richardson, and CEO, Lauren Stewart, have a forward-looking conversation about what’s next.
Link to recording, presentation slides, and accompanying resource: https://bnctechforum.ca/sessions/standardsgoals-for-2025-standards-certification-roundup/
Presented by BookNet Canada on May 6, 2025 with support from the Department of Canadian Heritage.
Semantic Cultivators : The Critical Future Role to Enable AIartmondano
By 2026, AI agents will consume 10x more enterprise data than humans, but with none of the contextual understanding that prevents catastrophic misinterpretations.
How Can I use the AI Hype in my Business Context?Daniel Lehner
𝙄𝙨 𝘼𝙄 𝙟𝙪𝙨𝙩 𝙝𝙮𝙥𝙚? 𝙊𝙧 𝙞𝙨 𝙞𝙩 𝙩𝙝𝙚 𝙜𝙖𝙢𝙚 𝙘𝙝𝙖𝙣𝙜𝙚𝙧 𝙮𝙤𝙪𝙧 𝙗𝙪𝙨𝙞𝙣𝙚𝙨𝙨 𝙣𝙚𝙚𝙙𝙨?
Everyone’s talking about AI but is anyone really using it to create real value?
Most companies want to leverage AI. Few know 𝗵𝗼𝘄.
✅ What exactly should you ask to find real AI opportunities?
✅ Which AI techniques actually fit your business?
✅ Is your data even ready for AI?
If you’re not sure, you’re not alone. This is a condensed version of the slides I presented at a Linkedin webinar for Tecnovy on 28.04.2025.
4. “The number of languages you know
corresponds to your programming
skill”
S
5. Y ... T
JUnit ScrewUnit
Rspec JBehave
PHPSpec Jasmine
JSpec Cucumber
Circumspec BlahSpec
SomethingSpec WhateverSpec
6. Y ... T
JUnit ScrewUnit
Rspec BORING!
JBehave
PHPSpec Jasmine
JSpec Cucumber
Circumspec BlahSpec
SomethingSpec WhateverSpec
7. T &M
Ruby
Monkey.stub!(:new).and_return(mock("monkey"))
Java
I owe you one Java mocking example.
I don’t have the will power to write it.
Sorry.
8. T &M
Ruby
BORING!
Monkey.stub!(:new).and_return(mock("monkey"))
Java
I owe you one Java mocking example.
I don’t have the will power to write it.
Sorry.
9. I r
Asynchronous Property testing
Permutation Model testing
explosions
Metrics Test feedback
Graphical tests
11. “Program testing can be used to show the
presence of bugs, but never to show their
absence!”
Edsger Dijkstra
12. Q C
Properties
For all values of s the length of the thing
returned by five_random_characters is 5
13. Q C
Properties
QuickCheck
Randomly
Logic generate Function
tests
14. Q C
Properties
QuickCheck
Randomly
Logic generate Function
tests
15. Q C
Properties
QuickCheck
Randomly
Logic generate Function
tests
16. Q C
Properties
QuickCheck
Randomly
Logic generate Function
tests
17. Q C
Properties
QuickCheck
Randomly
Logic generate Function
tests
Counter
Examples
18. Q C
Properties
it "should reverse a string" do
"monkeys".reverse.reverse.should == "monkeys"
end
100.times.map {“#{rand(10)}#{rand(10)}”}.each do |char|
it "should reverse a string" do
char.reverse.reverse.should == char
end
end
19. Q C
Properties
import Data.Char
import Test.QuickCheck
instance Arbitrary Char where
arbitrary = choose ('32', '128')
coarbitrary c = variant (ord c `rem` 4)
prop_RevRev xs = reverse (reverse xs) == xs
where types = xs::[Char]
$ Main> quickCheck prop_RevRev
OK, passed 100 tests.
21. M Er Models
Erlang McErlang
runtime runtime
system system
communication
concurrency
distribution
22. M Er Models
message Messenger
“Scottish
“Scottish Service
fiction”
fiction”
Message login login Message
client client
Fred Clara
23. M Er Models
if user1 does not send a message m to user2 until user2 is logged on,
then
if user1 does send a message m to user2
then
eventually user2 receives the message m.
"not P until Q => (eventually P => eventually R)”
P: clara sends message “Scottish fiction” to fred
Q: fred is logged on
R: fred receives the message “Scottish fiction” from clara
24. M Er Models
{program={scenario,start,[[
[{logon,clara},{message,fred,"hi"},logoff],
[{logon,fred},logoff]]]},
monitor={mce_ltl_parse:ltl_string2module_and_load
("not P until Q implies (eventually P implies
eventually R)", messenger_mon),
{void,[{'P',basicPredicates:message_to
(clara,fred,"hi")},
{'Q',basicPredicates:logon(fred)},
{'R',basicPredicates:message_received
(fred,clara,"hi")}]}},
algorithm={mce_alg_buechi,void}}).
25. “Every method you use to prevent or find
bugs leaves a residue of subtler bugs against
which those methods are ineffectual
Pesticide Paradox / Beizer
33. Z b .
Trapped inside a browser
var zombie = require("zombie");
var assert = require("assert");
zombie.visit("http://localhost:3000/",
function (err, browser, status) {
browser.
fill("email", "[email protected]").
pressButton("Sign Me Up!",
function(err, browser, status) {
assert.equal(browser.text("title"), "Welcome");
})
});
34. V w
Topics
{ topic: function () { return 42 },
'should be a number': function (topic) {
assert.isNumber (topic);
},
'should be equal to 42': function (topic) {
assert.equal (topic, 42);
}
}
35. V w
Asynchronous calls
{ topic: function () {
fs.stat('~/FILE', this.callback);
},
'can be accessed': function (err, stat) {
assert.isNull (err); // We have no error
assert.isObject (stat); // We have a stat object
},
'is not empty': function (err, stat) {
assert.isNotZero (stat.size); // The file size is > 0
}
}
36. V w
Promises / Futures
{ topic: function () {
var promise = new(events.EventEmitter);
fs.stat('~/FILE', function (e, res) {
if (e) { promise.emit('error', e) }
else { promise.emit('success', res) }
});
return promise;
},
'can be accessed': function (err, stat) {
assert.isNull (err); //We have no error
assert.isObject (stat); //We have a stat object
},
'is not empty': function (err, stat) {
assert.isNotZero (stat.size); //The file size is > 0
}
}
37. V w
Parallel Execution
{ '/dev/stdout': {
topic: function () { path.exists('/dev/stdout',this.callback) },
'exists': function (result) { assert.isTrue(result) }
},
'/dev/tty': {
topic: function () { path.exists('/dev/tty',this.callback) },
'exists': function (result) { assert.isTrue(result) }
},
'/dev/null': {
topic: function () { path.exists('/dev/null',this.callback) },
'exists': function (result) { assert.isTrue(result) }
}
}
49. ‘‘How much do you know about the
heuristics of failure?’
Joseph Wilk
Scotland Ruby Conf 2011
http://testobsessed.com/wp-content/uploads/2007/02/testheuristicscheatsheetv1.pdf