Visage is a JVM language designed specifically for UI development, with special syntax for hierarchically describing UIs, binding data and behavior, and representing UI specific concepts such as animation, layout, and styles. It also is a full-featured language with a full compiler tool-chain, static compilation to JVM bytecodes, and IDE plug-ins. This talk will demonstrate how to use the Visage language to build UIs for JavaFX 2.0, Vaadin, and Android. Find out how you can take control of your UI development by writing cleaner, more maintainable UI code using the Visage language in your existing Java projects.
JavaFX and Scala - Like Milk and CookiesStephen Chin
Presentation on Scala and JavaFX given at Scala Days. Shows how the ScalaFX API can be used to write cleaner and more maintainable code for your JavaFX applications in the Scala language. Also goes over implementation details that may be useful to other Scala DSL creators and has some quotes from Stephen Coulbourne to "lighten" things up.
JavaFX 2.0 With Alternative Languages - Groovy, Clojure, Scala, Fantom, and V...Stephen Chin
Presented at GeeCON 2011: JavaFX Script is going away, but the JavaFX Platform is getting a new face with pure Java APIs. In this session, you will see how you can leverage the new JavaFX 2.0 APIs from a host of different JVM languages, including JRuby, Clojure, Groovy, and Scala.
This document provides an overview of new features in Java 8, including lambda expressions, default methods on interfaces, bulk data operations on collections, and other library enhancements. It discusses how lambda expressions allow for closures in Java and interface evolution with default methods. It also provides code examples of using lambda expressions for event handling and animation in a JavaFX application that makes circles vanish when clicked.
Hacking JavaFX with Groovy, Clojure, Scala, and Visage: Stephen Chinjaxconf
JavaFX 2 is the next version of a revolutionary rich client platform for developing immersive desktop applications. One of the new features in JavaFX 2 is a set of pure Java APIs that can be used from any JVM language, opening up tremendous possibilities. This presentation demonstrates the potential of using JavaFX 2 together with alternative languages such as Groovy, Clojure, and Scala. It also will showcase the successor to JavaFX Script, Visage, a DSL with features specifically targeted at helping create clean UIs.
Slides for the Reactive 3D Game Engine presented at ScalaDays 2014.
Shows the demo of the 3D engine, followed by the description of the reactive 3D game engine - how reactive dependencies between input, time and game logic are expressed, how to deal with GC issues, how to model game state using Reactive Collections.
Moving from JFreeChart to JavaFX with JavaFX Chart ExtensionsBruce Schubert
JavaOne 2015 - Moving Enterprise Data from JFreeChart to JavaFX [CON7008]
JFreeChart provides very sophisticated charting capabilities which has made it the de facto charting tool for countless Java applications. JavaFX also provides beautiful and enticing charts which rival JFreeChart in many areas. This presentation discusses the challenges and experiences in moving complex business driven charts from JFreeChart to JavaFX, including using JFree's ChartViewer class. I share the lessons learned as I crossed the bridge from Swing-based charts to JavaFX charts.
JavaFX and Scala - Like Milk and CookiesStephen Chin
Presentation on Scala and JavaFX given at Scala Days. Shows how the ScalaFX API can be used to write cleaner and more maintainable code for your JavaFX applications in the Scala language. Also goes over implementation details that may be useful to other Scala DSL creators and has some quotes from Stephen Coulbourne to "lighten" things up.
JavaFX 2.0 With Alternative Languages - Groovy, Clojure, Scala, Fantom, and V...Stephen Chin
Presented at GeeCON 2011: JavaFX Script is going away, but the JavaFX Platform is getting a new face with pure Java APIs. In this session, you will see how you can leverage the new JavaFX 2.0 APIs from a host of different JVM languages, including JRuby, Clojure, Groovy, and Scala.
This document provides an overview of new features in Java 8, including lambda expressions, default methods on interfaces, bulk data operations on collections, and other library enhancements. It discusses how lambda expressions allow for closures in Java and interface evolution with default methods. It also provides code examples of using lambda expressions for event handling and animation in a JavaFX application that makes circles vanish when clicked.
Hacking JavaFX with Groovy, Clojure, Scala, and Visage: Stephen Chinjaxconf
JavaFX 2 is the next version of a revolutionary rich client platform for developing immersive desktop applications. One of the new features in JavaFX 2 is a set of pure Java APIs that can be used from any JVM language, opening up tremendous possibilities. This presentation demonstrates the potential of using JavaFX 2 together with alternative languages such as Groovy, Clojure, and Scala. It also will showcase the successor to JavaFX Script, Visage, a DSL with features specifically targeted at helping create clean UIs.
Slides for the Reactive 3D Game Engine presented at ScalaDays 2014.
Shows the demo of the 3D engine, followed by the description of the reactive 3D game engine - how reactive dependencies between input, time and game logic are expressed, how to deal with GC issues, how to model game state using Reactive Collections.
Moving from JFreeChart to JavaFX with JavaFX Chart ExtensionsBruce Schubert
JavaOne 2015 - Moving Enterprise Data from JFreeChart to JavaFX [CON7008]
JFreeChart provides very sophisticated charting capabilities which has made it the de facto charting tool for countless Java applications. JavaFX also provides beautiful and enticing charts which rival JFreeChart in many areas. This presentation discusses the challenges and experiences in moving complex business driven charts from JFreeChart to JavaFX, including using JFree's ChartViewer class. I share the lessons learned as I crossed the bridge from Swing-based charts to JavaFX charts.
This document provides an overview of JavaFX 2.0 and how to build JavaFX applications. It discusses the JavaFX 2.0 platform, building applications in Java, GroovyFX, ScalaFX and Visage, and the JavaFX 2.0 architecture. The document contains code examples for building a simple "Hello World" application in each technology. It also covers JavaFX properties, lists and binding capabilities.
The Ring programming language version 1.6 book - Part 46 of 189Mahmoud Samir Fayed
This document summarizes code from the Ring documentation related to user registration, login, and database classes. It describes classes for users, models, views, controllers, and languages that allow for user registration, login, form views, and routing. It also summarizes the Database, ModelBase, and ControllerBase classes that provide functionality for connecting to databases, executing queries, and managing model data.
Ralph Schindler (of Zend Framework) and Jon Wage (of Doctrine) presented these slides for a webinar hosted by zend.com (webinar available online).
Links are contained within the slides to the demo application that was also used during the webinar.
The document provides an agenda for a Clojure Deep Dive presentation. The agenda includes sections on the Core Language, Standard Tools, Clojure Compilation, and Clojure Pitfalls. It then goes on to describe various aspects of the Clojure core language such as forms, functions, namespaces, and more.
The document discusses XML parsers and compares DOM and SAX parsers. DOM parsers build an in-memory tree representation of the XML document, allowing random access but using more memory. SAX parsers use callbacks to stream the XML events to the client, using less memory but providing event-based access. The document also provides an overview of the popular Xerces-J parser and gives an example of using DOM and SAX parsers to extract circle element information from an XML document.
Beyond Breakpoints: Advanced Debugging with XCodeAijaz Ansari
This document contains code snippets and notes from a presentation or workshop about debugging techniques using tools like NSLog, LLDB, and jq. It discusses debugging crashes, testing hypotheses, and examining memory usage. It also demonstrates using the jq tool to parse and filter JSON data within the LLDB debugger. Code examples show setting breakpoints, accessing variables, and calling jq from a Python lldb command to apply jq filters to JSON strings from the debugger.
This document provides code examples in Java, Groovy, Scala, and Jython for solving the anagram problem of finding all permutations of words that can be formed from letters in a given input. The Java code is presented first, followed by simplified versions using Groovy, Scala, and Jython that take advantage of features in those languages like closures, functional programming, and dynamic typing. The examples demonstrate building a multimap to group words by their alphagrams, filtering to find groups above a minimum size, sorting the results, and printing the output.
Backbone.js: Run your Application Inside The BrowserHoward Lewis Ship
Backbone.js allows developers to structure JavaScript web applications as a set of models, views, and a router. Models contain application data, views are responsible for the UI, and the router handles application state and linking views to URLs. Collections are used to manage multiple models. Events are used to coordinate changes between the different components.
The Ring programming language version 1.10 book - Part 47 of 212Mahmoud Samir Fayed
This document summarizes the methods available in various Ring classes for data types, conversions, databases, security, and internet functions. It provides examples of using each class and the output. The DataType class allows checking value types and properties. The Conversion class converts between data types. Database classes like ODBC, MySQL, SQLite and PostgreSQL provide methods for connecting to databases and executing queries. The Security class implements hashing and encryption algorithms. The Internet class allows downloading files and sending emails.
PHP and MySQL Tips and tricks, DC 2007Damien Seguy
Like opening a long hidden treasure chest, this session will bring many jewels back to the programming light. We'll cover a number of lesser known PHP function and MySQL functionalities, that will help at daily tasks. They will be applied in various fields, including security, performances, standard compliance and simply fun to program.
The Ring programming language version 1.2 book - Part 79 of 84Mahmoud Samir Fayed
The document discusses extending Ring by adding new classes and functions. It can be done by writing C/C++ code and compiling it into a DLL that can be loaded from Ring using LoadLib(). Functions defined in the DLL can then be called from Ring. Alternatively, RingQt classes can be extended by defining new classes that inherit from existing Qt classes. A code generator written in Ring is also presented that can automatically generate wrapper code to interface with external C/C++ libraries from Ring.
The document introduces Scala and provides an overview of Scala basics including variables, functions, objects, classes, traits, pattern matching, for-comprehensions and more. It also discusses Scala's capabilities for generic programming, lazy evaluation, and integration with Java. Examples are provided throughout to demonstrate Scala concepts.
This document provides an overview of Database Jones, a Node.js API for highly scalable database access to MySQL Cluster. It introduces J.D. Duncan and Craig Russell, the creators of Database Jones, and describes how Database Jones provides an asynchronous JavaScript API that can be used with MySQL Cluster and other databases. It also summarizes the key features and capabilities of Database Jones, including its data modeling approaches, operations, and usage with Node.js applications.
This document provides an overview of Scala and compares it to Java. It discusses Scala's object-oriented and functional capabilities, how it compiles to JVM bytecode, and benefits like less boilerplate code and support for functional programming. Examples are given of implementing a simple Property class in both Java and Scala to illustrate concepts like case classes, immutable fields, and less lines of code in Scala. The document also touches on Java interoperability, learning Scala gradually, XML processing capabilities, testing frameworks, and tool/library support.
Gazr is a Flickr browser application built with Java and Qt Jambi that provides a Cover Flow-like visual experience for quickly browsing large photo collections. It uses kinetic scrolling along a Bézier curve controlled by velocity to smoothly animate between photos. Sound effects are triggered during scrolling movements. The application leverages various libraries like WebKit for image display and caching, and uses a model-view-controller framework to retrieve and display photo data from the Flickr API in a tree structure.
The Ring programming language version 1.9 book - Part 53 of 210Mahmoud Samir Fayed
This document provides code examples and documentation for Ring's web application framework. It includes code for user authentication using a database, classes for database access and web controllers, and descriptions of the main classes and methods in the WebLib API for generating HTML pages and handling requests. The document covers key concepts like generating pages dynamically based on request parameters, working with databases using Model classes, and common tasks like cookies, file uploads, and URL encoding.
Visage is a declarative language for building user interfaces that compiles to JavaFX. It aims to simplify UI design by allowing developers to write interfaces in a natural way. Some key advantages of Visage include being less code for more productivity, an intuitive graphical structure, and easy programming constructs for bindings and transitions. Visage applications can be built for JavaFX, Android, and Vaadin platforms. It provides a declarative alternative to the imperative XML and code-based approaches of these platforms.
JavaFX Your Way: Building JavaFX Applications with Alternative LanguagesStephen Chin
JavaFX is more than a language. It is also a platform for building immersive applications with graphics, animation, and rich media. In this session, you will see how you can leverage JavaFX from a host of different JVM languages, including Java, JRuby, Groovy, Scala, and Clojure.
This document provides an overview of JavaFX 2.0 and how to build JavaFX applications. It discusses the JavaFX 2.0 platform, building applications in Java, GroovyFX, ScalaFX and Visage, and the JavaFX 2.0 architecture. The document contains code examples for building a simple "Hello World" application in each technology. It also covers JavaFX properties, lists and binding capabilities.
The Ring programming language version 1.6 book - Part 46 of 189Mahmoud Samir Fayed
This document summarizes code from the Ring documentation related to user registration, login, and database classes. It describes classes for users, models, views, controllers, and languages that allow for user registration, login, form views, and routing. It also summarizes the Database, ModelBase, and ControllerBase classes that provide functionality for connecting to databases, executing queries, and managing model data.
Ralph Schindler (of Zend Framework) and Jon Wage (of Doctrine) presented these slides for a webinar hosted by zend.com (webinar available online).
Links are contained within the slides to the demo application that was also used during the webinar.
The document provides an agenda for a Clojure Deep Dive presentation. The agenda includes sections on the Core Language, Standard Tools, Clojure Compilation, and Clojure Pitfalls. It then goes on to describe various aspects of the Clojure core language such as forms, functions, namespaces, and more.
The document discusses XML parsers and compares DOM and SAX parsers. DOM parsers build an in-memory tree representation of the XML document, allowing random access but using more memory. SAX parsers use callbacks to stream the XML events to the client, using less memory but providing event-based access. The document also provides an overview of the popular Xerces-J parser and gives an example of using DOM and SAX parsers to extract circle element information from an XML document.
Beyond Breakpoints: Advanced Debugging with XCodeAijaz Ansari
This document contains code snippets and notes from a presentation or workshop about debugging techniques using tools like NSLog, LLDB, and jq. It discusses debugging crashes, testing hypotheses, and examining memory usage. It also demonstrates using the jq tool to parse and filter JSON data within the LLDB debugger. Code examples show setting breakpoints, accessing variables, and calling jq from a Python lldb command to apply jq filters to JSON strings from the debugger.
This document provides code examples in Java, Groovy, Scala, and Jython for solving the anagram problem of finding all permutations of words that can be formed from letters in a given input. The Java code is presented first, followed by simplified versions using Groovy, Scala, and Jython that take advantage of features in those languages like closures, functional programming, and dynamic typing. The examples demonstrate building a multimap to group words by their alphagrams, filtering to find groups above a minimum size, sorting the results, and printing the output.
Backbone.js: Run your Application Inside The BrowserHoward Lewis Ship
Backbone.js allows developers to structure JavaScript web applications as a set of models, views, and a router. Models contain application data, views are responsible for the UI, and the router handles application state and linking views to URLs. Collections are used to manage multiple models. Events are used to coordinate changes between the different components.
The Ring programming language version 1.10 book - Part 47 of 212Mahmoud Samir Fayed
This document summarizes the methods available in various Ring classes for data types, conversions, databases, security, and internet functions. It provides examples of using each class and the output. The DataType class allows checking value types and properties. The Conversion class converts between data types. Database classes like ODBC, MySQL, SQLite and PostgreSQL provide methods for connecting to databases and executing queries. The Security class implements hashing and encryption algorithms. The Internet class allows downloading files and sending emails.
PHP and MySQL Tips and tricks, DC 2007Damien Seguy
Like opening a long hidden treasure chest, this session will bring many jewels back to the programming light. We'll cover a number of lesser known PHP function and MySQL functionalities, that will help at daily tasks. They will be applied in various fields, including security, performances, standard compliance and simply fun to program.
The Ring programming language version 1.2 book - Part 79 of 84Mahmoud Samir Fayed
The document discusses extending Ring by adding new classes and functions. It can be done by writing C/C++ code and compiling it into a DLL that can be loaded from Ring using LoadLib(). Functions defined in the DLL can then be called from Ring. Alternatively, RingQt classes can be extended by defining new classes that inherit from existing Qt classes. A code generator written in Ring is also presented that can automatically generate wrapper code to interface with external C/C++ libraries from Ring.
The document introduces Scala and provides an overview of Scala basics including variables, functions, objects, classes, traits, pattern matching, for-comprehensions and more. It also discusses Scala's capabilities for generic programming, lazy evaluation, and integration with Java. Examples are provided throughout to demonstrate Scala concepts.
This document provides an overview of Database Jones, a Node.js API for highly scalable database access to MySQL Cluster. It introduces J.D. Duncan and Craig Russell, the creators of Database Jones, and describes how Database Jones provides an asynchronous JavaScript API that can be used with MySQL Cluster and other databases. It also summarizes the key features and capabilities of Database Jones, including its data modeling approaches, operations, and usage with Node.js applications.
This document provides an overview of Scala and compares it to Java. It discusses Scala's object-oriented and functional capabilities, how it compiles to JVM bytecode, and benefits like less boilerplate code and support for functional programming. Examples are given of implementing a simple Property class in both Java and Scala to illustrate concepts like case classes, immutable fields, and less lines of code in Scala. The document also touches on Java interoperability, learning Scala gradually, XML processing capabilities, testing frameworks, and tool/library support.
Gazr is a Flickr browser application built with Java and Qt Jambi that provides a Cover Flow-like visual experience for quickly browsing large photo collections. It uses kinetic scrolling along a Bézier curve controlled by velocity to smoothly animate between photos. Sound effects are triggered during scrolling movements. The application leverages various libraries like WebKit for image display and caching, and uses a model-view-controller framework to retrieve and display photo data from the Flickr API in a tree structure.
The Ring programming language version 1.9 book - Part 53 of 210Mahmoud Samir Fayed
This document provides code examples and documentation for Ring's web application framework. It includes code for user authentication using a database, classes for database access and web controllers, and descriptions of the main classes and methods in the WebLib API for generating HTML pages and handling requests. The document covers key concepts like generating pages dynamically based on request parameters, working with databases using Model classes, and common tasks like cookies, file uploads, and URL encoding.
Visage is a declarative language for building user interfaces that compiles to JavaFX. It aims to simplify UI design by allowing developers to write interfaces in a natural way. Some key advantages of Visage include being less code for more productivity, an intuitive graphical structure, and easy programming constructs for bindings and transitions. Visage applications can be built for JavaFX, Android, and Vaadin platforms. It provides a declarative alternative to the imperative XML and code-based approaches of these platforms.
JavaFX Your Way: Building JavaFX Applications with Alternative LanguagesStephen Chin
JavaFX is more than a language. It is also a platform for building immersive applications with graphics, animation, and rich media. In this session, you will see how you can leverage JavaFX from a host of different JVM languages, including Java, JRuby, Groovy, Scala, and Clojure.
This document provides an overview of JavaFX and its key features:
- JavaFX is a platform for creating rich internet applications that can run across desktops, browsers, and mobile devices using a unified development model.
- It allows developers to build visually engaging experiences and distribute them broadly thanks to Java's widespread adoption across billions of devices.
- JavaFX aims to streamline the designer-developer workflow by shortening the production cycle for design and development.
- Examples of applications that can be built with JavaFX include 3D displays, video players, and applications with interactive 3D effects.
This document discusses an experiment to use PostgreSQL as the sole data access layer for a web application by replacing a traditional RESTful API server with PostgREST. PostgREST is a framework that provides a RESTful interface to any PostgreSQL database without requiring additional code or configuration. The document demonstrates PostgREST by connecting to a sample Pagila database and allowing full CRUD operations and filtering through SQL queries alone. It also shows how PostgREST handles authentication, authorization, relations, and versioning directly through PostgreSQL features.
This document discusses JavaFX layout fundamentals, including changes coming in version 1.3. It covers the layout mechanism, resizable vs non-resizable nodes, layout bounds, app-managed vs container-managed layout, common layout containers like Stack and HBox, and concepts like growing, shrinking, and filling. The document also provides 10 commandments for working with JavaFX layout.
This document provides an overview of JavaFX, including:
- What JavaFX is and its main components like the JavaFX Framework and JavaFX Script language
- Demos of shapes, animations, and other graphics capabilities in JavaFX
- An overview of the JavaFX architecture and scene graph project for building user interfaces
- Resources for learning more about and getting started with JavaFX development
Bind is a DNS server that translates domain names like "example.com" into IP addresses like 192.0.2.1 so that web browsers and other internet applications can locate internet resources. Bind is open source software maintained by the Internet Systems Consortium (ISC) and is the most widely used DNS server on the internet today. It runs on Unix-like operating systems such as Linux and macOS and provides both authoritative name servers for zones as well as caching servers to improve DNS performance.
The document discusses 3D modeling in JavaFX and describes how to create a basic cube shape using a Box primitive. Code is provided to instantiate a new Box object with dimensions of 150 units each way and add it to the scene graph as a child of the parent node. Additional 3D primitives like sphere and cylinder are listed, as well as options for custom meshes, importing models, and viewing 3D content in JavaFX.
This document provides an introduction and overview of JavaFX. It discusses that JavaFX is an API included in Java SE 7/8 for building rich internet applications with a familiar Java programming model. JavaFX allows developing cross-platform applications for Windows, Mac, and Linux. It highlights benefits like rapid application development using tools like NetBeans and SceneBuilder, CSS styling, and building user interfaces with FXML. The document provides examples of basic JavaFX components like containers, controls, shapes, and charts and recommends resources to get started with JavaFX.
The document discusses the JavaFX ecosystem, including layout managers like MigLayout and Medusa, widgets like JideFX and ControlsFX, styling libraries like JFoenix and BootstrapFX, testing tools like TestFX, frameworks like Afterburner.fx and MvvmFX, integration platforms like e(fx)clipse, libraries like AnchorFX and ReactFX, and GroovyFX for writing JavaFX applications in Groovy. It provides an overview of the various options available for building JavaFX user interfaces, styling applications, testing, and developing full applications.
Raspberry Pi Gaming 4 Kids (Devoxx4Kids)Stephen Chin
This document discusses setting up a Raspberry Pi for kids to learn coding and game development using Java. It provides instructions on installing Linux and Java on the Pi, connecting a touchscreen and other accessories to build a coding lab kit. The document then demonstrates how to use streams, filters, maps and other Java 8 lambda features to program interactive games and simulations using the Pi kit.
1. The document discusses 10 things the author likes about JavaFX, which is a Java UI toolkit.
2. It provides examples of JavaFX capabilities like data binding, FXML, CSS, effects, animations, multi-touch support, charts, and integration with web views.
3. The author encourages using JavaFX instead of older toolkits like Swing, argues it is efficient and modern, and offers to provide more information to those interested in migrating from Swing to JavaFX.
Confessions of a Former Agile Methodologist (JFrog Edition)Stephen Chin
I am best known for my work as a technology author and evangelist, but before this I used to be a methodology guru. Find out about what I learned in my 14+ year journey through the Agile methodologies and trends that have reshaped what we know as modern software development practices. This version of the talk has a few Easter Eggs for the JFrog guys who were instrumental in the build and test infrastructure I succeeded with, and invited me to speak at their awesome SwampUP event in Napa.
The document discusses the introduction of an HTTP plugin for MySQL. Key points:
- The plugin allows MySQL to communicate over HTTP and return data in JSON format, making it more accessible to web developers.
- It provides three HTTP APIs - SQL, CRUD, and key-document - that all return JSON and leverage the power of SQL.
- The initial release has some limitations but demonstrates the concept, with the goal of getting feedback to improve the APIs.
- The plugin acts as a proxy between HTTP and SQL, translating requests and allowing full access to MySQL's features via the SQL endpoint.
English version of the Devoxx4Kids workshop deck to teach programming using the NAO humanoid robot. (Credit to Daniel De Luca for content creation and Nicolas Rigaud on translation)
This document provides information about using Lego EV3 robots with LeJOS, including how to set up the software and connect to the EV3 brick from Windows. It describes the hardware components of the EV3 brick and various sensors. It also includes steps to build a wind turbine project with a fan, light sensor, and motors to rotate the turbine and fan. Code examples are provided to control the motors and read the light sensor.
With Java 8 released in March 2014, Oracle Java Technology Ambassador James Weaver discusses many of its new features such as lambda expressions, the stream API, and client-side capabilities with the JavaFX library.
JavaFX 2 and Scala - Like Milk and Cookies (33rd Degrees)Stephen Chin
JavaFX 2.0 is the next version of a revolutionary rich client platform for developing immersive desktop applications. One of the new features in JavaFX 2.0 is a set of pure Java APIs that can be used from any JVM language, opening up tremendous possibilities. This presentation demonstrates the benefits of using JavaFX 2.0 together with the Scala programming language to provide a type-safe declarative syntax with support for lazy bindings and collections. Advanced language features, such as DelayedInit and @specialized will be discussed, as will ways of forcing prioritization of implicit conversions for n-level cases. Those who survive the pure technical geekiness of this talk will be rewarded with plenty of JavaFX UI eye candy.
Apresentação em português dos motivos para escolher ScalaFX para criar aplicativos nativos para as plataformas Mac OS X, Linux e Windows. Explico em português minha caminhada atrás das alternativas no mundo do JavaFX2 após a retirada do JavaFX Script em setembro de 2010. Descubra aqui por que eu fiquei com ScalaFX como alternativa mais elegante e fácil de programar.
Here are the key points about closure arguments in Groovy:
- Closures can take arguments like regular methods
- Arguments are specified inside the closure definition between parentheses ()
- Argument names are specified like method parameters (e.g. num, id)
- If no arguments are needed, the parentheses can be omitted
- The last argument can optionally be a special variable called "it" which represents the argument passed to the closure
- Closures are first-class and can be passed to methods like regular arguments
So in summary:
Closures in Groovy allow defining inline anonymous functions that can take arguments like regular methods. The arguments are specified in the closure definition between parentheses and represent the values passed when calling
The document discusses common issues and pitfalls in Java, including numeric types and overflows, string constants and substring methods, finally blocks and null values, equals methods, class initialization order, and differences between override and hidden methods. It also provides an overview of collections frameworks in Java and explores concepts like lists, sets, maps, concurrent maps, locks, thread pools, and thread safety.
This document provides an overview of coding in style with Scala. It discusses embracing expressions over statements, operator notation, using language features to simplify code, favoring higher-order functions, manipulating data with collections, working with asynchronous code and futures, macro programming to transform ASTs, and new features coming in Scala 2.11 like potential modularization and performance improvements. The document encourages idiomatic Scala techniques like favoring expressions, embracing operators, letting the language do work, aiming higher with higher-order functions, and embracing new language features.
This document discusses control structures and break and continue statements in JavaScript. It begins by providing an example of a for loop that counts from 1 to 6000. It then discusses arrays in JavaScript, including how to declare and access single and multi-dimensional arrays. Some key array methods like reverse() and sort() are also mentioned. The document concludes by explaining how to write a web page that prompts the user for 10 words and displays them in sorted order.
This document provides a summary of key C++ concepts for an online certification course from the Global Open University, including pointers, arrays, parameter passing, classes, constructors/destructors, inheritance, virtual functions, and coding tips. It includes code examples and explanations for working with pointers, arrays, strings, parameter passing by value and reference, class basics like public/private access, stack vs heap allocation, constructors, copy constructors, destructors, inheritance and polymorphism through virtual functions. Advanced topics are briefly mentioned but not covered in detail. Contact information is provided for the Global Open University's online certification programs.
This document provides a summary of key C++ concepts for an online certification course from the Global Open University, including pointers, arrays, parameter passing, classes, constructors/destructors, inheritance, virtual functions, and coding tips. It includes code examples and explanations for working with pointers, arrays, strings, parameter passing, classes, inheritance, polymorphism, and best practices for avoiding errors. The full course material can be accessed online at the provided URL.
In this talk, Adrian Kashivskyy, Netguru iOS Developer, digs into rarely discussed Swift features, such as literal convertibles, interpolation convertibles, pattern matching, reflection and advanced Objective-C bridging.
A Sceptical Guide to Functional ProgrammingGarth Gilmour
This document provides a skeptical guide to functional programming through a series of slides presented at a BASH event. It begins by acknowledging that the presenter likes FP but is skeptical of FP programmers. It then discusses some functional programming languages like Lisp, Haskell, and Scala. It explores the differences between pure and hybrid languages. Several slides provide examples of code in languages like Clojure and Scala to demonstrate functional concepts. The presentation questions whether the language itself matters and argues the audience may already be using FP techniques without realizing it.
The document discusses different ways to implement threading in Java programs. It provides code examples to demonstrate creating threads by extending the Thread class and implementing the Runnable interface. The code examples show printing output from both the main thread and child threads to illustrate threading concepts. Socket programming and RMI examples are also provided with code to implement client-server applications using threads.
Declarative Name Binding and Scope RulesEelco Visser
The document proposes a language-parametric approach to name resolution based on declarative name binding and scope rules, where name binding and scope are defined using a declarative syntax that is independent of any concrete programming language. It describes how name binding and scope can be defined using context-free grammars annotated with attributes to specify definitions, references, and scopes. The approach aims to support name resolution tasks like reference resolution, code completion, and refactoring in a modular way that is reusable across multiple languages.
The document provides documentation for an SVG generation library in Go. It describes functions for reading Flickr photo data, parsing it into structures, and drawing an image grid. Key functions include flickrAPI to call the Flickr API, makeURI to convert photo details to URLs, and imageGrid to read the response, create an SVG group, and add linked image elements in a grid layout.
This document provides notes on Strings and StringBuffers in Java. It discusses:
- The String and StringBuffer classes, their key differences, and common constructors for each.
- Common String methods like length(), charAt(), equals(), compareTo(), and toUpperCase().
- How to extract, compare, modify and check substrings within a String.
- Common StringBuffer methods like append(), insert(), delete(), and replace() that allow mutable string operations.
- The Java util Date class and Random number generator, with examples of constructing and using each.
It then covers exceptions in Java, including checked vs unchecked exceptions, syntax for try/catch blocks, and using multiple
Vision academy classes_bcs_bca_bba_java part_2NayanTapare1
Digital marketing, refers to marketing methods that allow organizations to see how a campaign is performing in real-time, such as what is being viewed, how often, how long, as well as other statistics such as sales conversions.
This document summarizes some of the key differences between Scala and Java syntax. It covers topics like type definitions, variables, methods, classes, traits, collections, exceptions, control flow, and packages. Overall, the document shows that Scala code is more concise and expressive than equivalent Java code for many common programming constructs.
Having fun with graphs, a short introduction to D3.jsMichael Hackstein
This talk is all about drawing on your webpage. We will have a short introduction to d3.js, a library to easily create SVGs in your webpage. Along the way we will render graphs using different layouting strategies. But what are the problems when displaying a graph? Just think of graphs having more vertices then you have pixels on your screen. Or what if you want a user to manupilate the graph and his changes being persistent? Michael will present his answers to this questions, ending up wit a GUI for a graph database.
This document discusses escape sequences, verbatim strings, and substitution markers in C#. It provides examples of using escape sequences like \n for newlines. Verbatim strings prefixed with @ disable escape sequences. Substitution markers like {0} in a format string are replaced with variable values. The document demonstrates various string formatting techniques and taking user input in C# programs.
This document summarizes key similarities and differences between Scala and Java types, variables, methods, classes, collections, control structures, and other language features. Some of the main points covered include:
- Type definitions, variables, and methods are defined similarly but with different syntax in Scala vs Java
- Classes and traits in Scala are like classes and interfaces in Java
- Scala avoids static methods and instead uses singleton objects
- Control structures like if/else, for loops, and exceptions work similarly
- Scala supports features like tuples, pattern matching, and expression-oriented programming that have no direct equivalent in Java
Similar to Cleaner APIs, Cleaner UIs with Visage (33rd Degrees) (20)
With the rise of DevOps, Cloud Computing, and Container technologies, how you approach development has dramatically changed. Learn how to take advantage of microservices, serverless, and cloud-native technologies with the latest DevOps techniques to create hyperproductive teams.
10 Ways Everyone Can Support the Java CommunityStephen Chin
Foojay is all about the community helping to take Java forward, so as an attendee of the Friends of OpenJDK FOSDEM devroom you are already on your way towards making the Java community better!
But what can we all encourage our friends and colleagues to do in order to make the Java community more vibrant, active, and welcoming.
In this presentation, you will learn all of the insider secrets on how to support the worldwide community of 12 million Java developers.
Java Clients and JavaFX: The Definitive GuideStephen Chin
This talk is for professionals building Java applications for desktop, mobile, and embedded devices in the cloud age. It will help you build enhanced visual experiences and deploy modern, easy-to-maintain client applications across a variety of platforms. These applications can take advantage of the latest user interface components, 3D technology, and cloud services to create immersive visualizations and enable high-value data manipulation. Learn from Stephen Chin, lead author of the definitive Java client reference, how to leverage the latest open-source Java client technologies to build rich, responsive, and modern UIs.
Speaker: Stephen Chin
Bio: Stephen Chin is Senior Director of Developer Relations at JFrog, author of Raspberry Pi with Java, The Definitive Guide to Modern Client Development, and Pro JavaFX Platform. He has keynoted numerous Java conferences around the world including Oracle Code One (formerly JavaOne), where he is an 8-time Rock Star Award recipient. Stephen is an avid motorcyclist who has done evangelism tours in Europe, Japan, and Brazil, interviewing hackers in their natural habitat and posting the videos on http://nighthacking.org/. When he is not traveling, he enjoys teaching kids how to do embedded and robot programming together with his teenage daughter.
With the rise of DevOps, low cost Cloud Computing, and emerging Container technologies, the landscape for how you approach development has dramatically changed. This talk is focused on helping Java developers to adapt to this new landscape and take advantage of microservices, serverless, and cloud-native technologies with the latest DevOps techniques to simplify their build and create hyperproductive teams. Some of the technologies you will learn about in this talk include source control, build declaration, CI/CD, package management, containerization, and security.
Learn from the combined experience of the presenters who are experts in the Java and DevOps domains on the best tools, technologies, and methodologies to build your next cloud-native application or refactor your monolith. We cover the entire DevOps toolchain from source control through CI/CD through containerized deployments with an emphasis on maintaining efficiency and control from the source code and dependencies.
Java Clients and JavaFX - Presented to LJCStephen Chin
This session is for professionals building Java applications for desktop, mobile, and embedded devices in the cloud age. It will help you build enhanced visual experiences and deploy modern, easy-to-maintain client applications across a variety of platforms. These applications can take advantage of the latest user interface components, 3D technology, and cloud services to create immersive visualizations and enable high-value data manipulation.
Learn from Stephen Chin, lead author of the definitive Java client reference, how to leverage the latest open-source Java client technologies to build rich, responsive, and modern UIs.
RetroPi Handheld Raspberry Pi Gaming ConsoleStephen Chin
In this session I will walk you through how to build your own retro handheld console that is powered by Java, runs on a Raspberry Pi, and is printed on a 3D printer. Some of the topics that we will cover along the journey include:
• Hacking Java on the Raspberry Pi
• Rigging input devices with Pi4J
• Insane performance tuning on the JVM
• Why your boss [or SO] needs to buy you a 3D printer!
And of course your retro gaming mettle will be put to the test, so make sure to dust off your old 8 and 16 bit consoles to prepare.
This presentation is about the most fun you can have while still legitimately calling this conference “work.” In fact, I will hopefully inspire you to do your own creative “work” leveraging Java and Raspberry Pi to hack the real world.
When JavaFX Script was released, the mobile component was an important part. It was also one of the reasons many people and analysts believed in JavaFX as a real cross-platform client-side framework. For a number of reasons, JavaFX on mobile disappeared from the official Java roadmap. Fortunately, the OpenJFX team at Oracle made all the required sources available, and the JavaFXPorts initiative worked on providing JavaFX SDK's for the mobile platforms. In this session, we will show the current state of JavaFX on Mobile. We will show how to create a real cross-platform JavaFX Application using an IDE, and how easy it actually is to deploy that application on Android and iOS devices. We will show some of the features and limitations, and talk about the eco-system that is starting to take shape.
Confessions of a Former Agile MethodologistStephen Chin
While I am best known as a Java evangelist, my day job prior to joining Oracle was Chief Agile Methodologist where I facilitated 3 company-wide Agile rollouts. If you are skeptical of folks trying to sell you certifications, frustrated with the institution of new processes and tracking systems, or wary of process experts taking the place of technical leadership, then this is the session for you. Come learn the insider secrets of how Agile works in a large enterprise from someone who has been in the eye of the hurricane. However, be warned that this knowledge will give you the power to change the development culture in your organization for better or worse -- are you ready to shoulder this responsibility?
This document summarizes an Internet of Things magic show presented by Stephen Chin and Angela Caicedo at a JavaOne conference. The show demonstrated three magic tricks enabled by IoT technologies:
1. Mind reading: A jacket with sensors gave feedback to correctly predict the audience member's selection from a menu.
2. Lightning reflexes: An IoT-enabled grabber reacted in real-time to lights and sounds to play a game.
3. Materialization: A 3D printer was used to demonstrate making objects appear from nothing using code and IoT technologies.
The show highlighted how IoT, Java, sensors, actuators and other technologies can enable interactive experiences and "magic" through
Surviving as a zombie is tough... with the constant risks of sunlight, fire, and pesky mobs, doing your job of infecting the local villagers can be deadly. Fortunately, with the new JavaFX ZombieTime app, powered by the JSR 310 Date and Time API, you can rest easy. With built-in time zone and DST support you no longer have to worry about roaming around under the scorching hot sun. Accurately calculate out how long you have to infect the villagers before you decompose using Durations. And coordinate global attacks on the humans by syncing with your undead brethren on Instants. With the power of Java 8, eradicating the human race with a highly infectious virus has never been easier!
This presentation is designed to teach Java Date and Time APIs to the undead, but the living are welcome to be our "guests". You may also learn some JavaFX in the process -- that is entirely my fault. Any correlation between the characters and events in this presentation and the impending extinction of mankind is purely coincidental.
The document discusses JavaFX and its capabilities for building applications across platforms like Android and desktop systems. It provides an overview of JavaFX's cross-platform graphics, animation, and media support. It also outlines how to get JavaFX, develop applications with it using common IDEs, and deploy applications to Android devices. The document demonstrates a simple JavaFX application with animating circles and provides information on JavaFX layouts, controls, themes, and visual development tools.
This document provides instructions for setting up and using a Raspberry Pi with a touchscreen to run Java applications. It outlines downloading and installing Java 8 on the Raspberry Pi, connecting the touchscreen and other hardware, setting up the WiFi connection, and provides an example of running a sample JavaFX application. It also describes additional sensors that can be connected and sample code for interacting with them through the Pi4J library.
This document discusses using Java SE on small devices like tablets, Pis, and Legos. It outlines how Java SE 8 supports these types of devices better than previous versions through improved APIs, language features, and performance. It provides examples of projects like LeJOS that run Java on Lego Mindstorms robots and discusses tools like DukePad for developing Java applications on tablets. The document advocates getting involved in open source projects to help expand Java's reach to more small devices and embedded systems.
DukeScript is a new way of writing JavaScript applications that lets you take advantage of a powerful binding model to connect to Java code running in a local JVM.
This document discusses using a Raspberry Pi with a touchscreen to teach kids how to code and experiment with Java. It provides step-by-step instructions on setting up the hardware, installing Java on the Pi, and running sample JavaFX applications. It also explains Java streaming concepts like filtering, mapping, and reducing through code examples using a "Mary Had a Little Lamb" theme. The goal is to make coding accessible and fun for children through hands-on projects on affordable hardware.
The document discusses using JavaFX on Raspberry Pi devices. It provides examples of JavaFX applications written in both Java and the GroovyFX declarative syntax. It demonstrates how GroovyFX simplifies common tasks like creating UI elements, adding animations, handling events, and laying out components compared to the Java approach.
This document discusses JavaFX and how to develop applications with it. It provides an overview of JavaFX's capabilities like cross-platform animation and graphics acceleration. It explains how to get JavaFX, develop with it using popular IDEs, and create a simple "Hello World" application. It also discusses running JavaFX on embedded boards like BeagleBone and upcoming support for Raspberry Pi. The conclusion summarizes that JavaFX enables visually rich apps that can be deployed via browser, web start, or native packaging.
For the full video of this presentation, please visit: https://www.edge-ai-vision.com/2024/06/how-axelera-ai-uses-digital-compute-in-memory-to-deliver-fast-and-energy-efficient-computer-vision-a-presentation-from-axelera-ai/
Bram Verhoef, Head of Machine Learning at Axelera AI, presents the “How Axelera AI Uses Digital Compute-in-memory to Deliver Fast and Energy-efficient Computer Vision” tutorial at the May 2024 Embedded Vision Summit.
As artificial intelligence inference transitions from cloud environments to edge locations, computer vision applications achieve heightened responsiveness, reliability and privacy. This migration, however, introduces the challenge of operating within the stringent confines of resource constraints typical at the edge, including small form factors, low energy budgets and diminished memory and computational capacities. Axelera AI addresses these challenges through an innovative approach of performing digital computations within memory itself. This technique facilitates the realization of high-performance, energy-efficient and cost-effective computer vision capabilities at the thin and thick edge, extending the frontier of what is achievable with current technologies.
In this presentation, Verhoef unveils his company’s pioneering chip technology and demonstrates its capacity to deliver exceptional frames-per-second performance across a range of standard computer vision networks typical of applications in security, surveillance and the industrial sector. This shows that advanced computer vision can be accessible and efficient, even at the very edge of our technological ecosystem.
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.
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
Best 20 SEO Techniques To Improve Website Visibility In SERPPixlogix Infotech
Boost your website's visibility with proven SEO techniques! Our latest blog dives into essential strategies to enhance your online presence, increase traffic, and rank higher on search engines. From keyword optimization to quality content creation, learn how to make your site stand out in the crowded digital landscape. Discover actionable tips and expert insights to elevate your SEO game.
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.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
Digital Banking in the Cloud: How Citizens Bank Unlocked Their MainframePrecisely
Inconsistent user experience and siloed data, high costs, and changing customer expectations – Citizens Bank was experiencing these challenges while it was attempting to deliver a superior digital banking experience for its clients. Its core banking applications run on the mainframe and Citizens was using legacy utilities to get the critical mainframe data to feed customer-facing channels, like call centers, web, and mobile. Ultimately, this led to higher operating costs (MIPS), delayed response times, and longer time to market.
Ever-changing customer expectations demand more modern digital experiences, and the bank needed to find a solution that could provide real-time data to its customer channels with low latency and operating costs. Join this session to learn how Citizens is leveraging Precisely to replicate mainframe data to its customer channels and deliver on their “modern digital bank” experiences.
"Choosing proper type of scaling", Olena SyrotaFwdays
Imagine an IoT processing system that is already quite mature and production-ready and for which client coverage is growing and scaling and performance aspects are life and death questions. The system has Redis, MongoDB, and stream processing based on ksqldb. In this talk, firstly, we will analyze scaling approaches and then select the proper ones for our system.
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.
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.
GraphRAG for Life Science to increase LLM accuracyTomaz Bratanic
GraphRAG for life science domain, where you retriever information from biomedical knowledge graphs using LLMs to increase the accuracy and performance of generated answers
Programming Foundation Models with DSPy - Meetup SlidesZilliz
Prompting language models is hard, while programming language models is easy. In this talk, I will discuss the state-of-the-art framework DSPy for programming foundation models with its powerful optimizers and runtime constraint system.
Skybuffer SAM4U tool for SAP license adoptionTatiana Kojar
Manage and optimize your license adoption and consumption with SAM4U, an SAP free customer software asset management tool.
SAM4U, an SAP complimentary software asset management tool for customers, delivers a detailed and well-structured overview of license inventory and usage with a user-friendly interface. We offer a hosted, cost-effective, and performance-optimized SAM4U setup in the Skybuffer Cloud environment. You retain ownership of the system and data, while we manage the ABAP 7.58 infrastructure, ensuring fixed Total Cost of Ownership (TCO) and exceptional services through the SAP Fiori interface.
Main news related to the CCS TSI 2023 (2023/1695)Jakub Marek
An English 🇬🇧 translation of a presentation to the speech I gave about the main changes brought by CCS TSI 2023 at the biggest Czech conference on Communications and signalling systems on Railways, which was held in Clarion Hotel Olomouc from 7th to 9th November 2023 (konferenceszt.cz). Attended by around 500 participants and 200 on-line followers.
The original Czech 🇨🇿 version of the presentation can be found here: https://www.slideshare.net/slideshow/hlavni-novinky-souvisejici-s-ccs-tsi-2023-2023-1695/269688092 .
The videorecording (in Czech) from the presentation is available here: https://youtu.be/WzjJWm4IyPk?si=SImb06tuXGb30BEH .
Digital Marketing Trends in 2024 | Guide for Staying AheadWask
https://www.wask.co/ebooks/digital-marketing-trends-in-2024
Feeling lost in the digital marketing whirlwind of 2024? Technology is changing, consumer habits are evolving, and staying ahead of the curve feels like a never-ending pursuit. This e-book is your compass. Dive into actionable insights to handle the complexities of modern marketing. From hyper-personalization to the power of user-generated content, learn how to build long-term relationships with your audience and unlock the secrets to success in the ever-shifting digital landscape.
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsDianaGray10
Join us to learn how UiPath Apps can directly and easily interact with prebuilt connectors via Integration Service--including Salesforce, ServiceNow, Open GenAI, and more.
The best part is you can achieve this without building a custom workflow! Say goodbye to the hassle of using separate automations to call APIs. By seamlessly integrating within App Studio, you can now easily streamline your workflow, while gaining direct access to our Connector Catalog of popular applications.
We’ll discuss and demo the benefits of UiPath Apps and connectors including:
Creating a compelling user experience for any software, without the limitations of APIs.
Accelerating the app creation process, saving time and effort
Enjoying high-performance CRUD (create, read, update, delete) operations, for
seamless data management.
Speakers:
Russell Alfeche, Technology Leader, RPA at qBotic and UiPath MVP
Charlie Greenberg, host
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)
1. Cleaner APIs, Cleaner UIs
with Visage
Stephen Chin
Chief Agile Methodologist – GXS
http://steveonjava.com/
Tweet: @steveonjava
2. The Visage Language http://visage-lang.org/
Statically Compiled
Language
Based on F3 / JavaFX
Script
Planning Support for
Different Platforms:
- JavaFX 2.0
> "Visage is a domain - Vaadin
specific language (DSL)
designed for the express - A Popular Linux-based
purpose of writing user Tablet OS
interfaces."
2
3. What Does Visage Look Like?
Stage {
var input:TextBox;
title: bind input.text
Scene {
input = TextBox {
color: #DDCC33
}
}
}
3
4. What Does Visage Look Like?
Stage {
var input:TextBox;
title: bind input.text
Scene { Hierarchy Models Your
User Interface
input = TextBox {
color: #DDCC33
}
}
}
4
5. What Does Visage Look Like?
Stage {
var input:TextBox;
title: bind input.text
Scene { User Interface Updates
Automatically
input = TextBox {
color: #DDCC33
}
}
}
5
6. What Does Visage Look Like?
Stage {
var input:TextBox;
title: bind input.text
Scene {
input = TextBox { Built-in Constructs for
Building UIs
color: #DDCC33
}
}
}
6
7. What Does Visage Look Like?
Stage {
var input:TextBox;
title: bind input.text
Scene {
input = TextBox { No more NPEs!
color: #DDCC33
}
}
}
7
8. What Does Visage Look Like?
Stage {
var input:TextBox;
title: bind input!.text
Scene {
input = TextBox { Unless you add an
exclamation mark!
color: #DDCC33
}
}
}
8
10. Java vs. Visage DSL
var circles:Circle[];
ublic class VanishingCircles extends Application { Stage {
title: "Vanishing Circles"
Scene {
public static void main(String[] args) { width: 800
height: 600
Application.launch(args); fill: BLACK
Group {
} circles = for (i in [1..50]) {
def c:Circle = Circle {
centerX: random() * 800
centerY: random() * 600
@Override radius: 150
fill: color(random(), random(), random(), .2)
public void start(Stage primaryStage) { effect: BoxBlur {
height: 10
primaryStage.setTitle("Vanishing Circles"); width: 10
iterations: 3
40 Lines
Group root = new Group();
Scene scene = new Scene(root, 800, 600, Color.BLACK);
}
35 Lines
stroke: WHITE
strokeWidth: bind if (c.hover) 5 else 0
1299 Characters 487 Characters
onMouseClicked: function(e) {
List<Circle> circles = new ArrayList<Circle>(); Timeline {at (3s) {c.radius => 0}}.play()
}
for (int i = 0; i < 50; i++) { }
}
final Circle circle = new Circle(150); }
}
circle.setCenterX(Math.random() * 800); }
circle.setCenterY(Math.random() * 600); Timeline {
for (circle in circles) at (40s) {
circle.setFill(new Color(Math.random(), Math.random(), Math.random(), .2)); circle.centerX => random() * 800;
circle.centerY => random() * 600
circle.setEffect(new BoxBlur(10, 10, 3)); }
}.play()
circle.addEventHandler(MouseEvent.MOUSE_CLICKED, new
EventHandler<MouseEvent>() {
public void handle(MouseEvent t) {
KeyValue collapse = new KeyValue(circle.radiusProperty(), 0);
new Timeline(new KeyFrame(Duration.seconds(3), collapse)).play();
}
});
circle.setStroke(Color.WHITE);
10
circle.strokeWidthProperty().bind(Bindings.when(circle.hoverProperty())
11. How about JavaFX on… Visage
Stage {
title: "Vanishing Circles"
scene: Scene {
width: 800
height: 600
fill: BLACK
content: Group {
circles = for (i in [1..50]) {
Circle {
centerX: random() * 800
centerY: random() * 600
}
}
}
}
}
11
12. How about JavaFX on… Visage
Stage {
title: "Vanishing Circles"
scene: Scene {
width: 800
height: 600
fill: BLACK
content: Group {
circles = for (i in [1..50]) {
Circle {
centerX: random() * 800
centerY: random() * 600
}
}
}
}
}
12
13. How about JavaFX on… Visage
Stage {
title: "Vanishing Circles"
Scene {
width: 800
height: 600
fill: BLACK
Group {
circles = for (i in [1..50]) {
Circle {
centerX: random() * 800
centerY: random() * 600
}
}
}
}
}
13
27. Plus
P some more Java…
public class HelloVisage extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedIS) {
super.onCreate(savedIS);
setContentView(R.layout.main);
}
}
27
31. Straight JavaFX Conversion...
public class HelloVisage extends Activity {
override function onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState);
def context = getApplicationContext();
def layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
def text = new TextView(context);
text.setText("Hello World, Long Visage");
layout.addView(text);
setContentView(layout);
}
}
31
32. Straight JavaFX Conversion...
public class HelloVisage extends Activity {
override function onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState);
def context = getApplicationContext();
Override is a built-in
def layout = new LinearLayout(context);
keyword
layout.setOrientation(LinearLayout.VERTICAL);
def text = new TextView(context);
text.setText("Hello World, Long Visage");
layout.addView(text);
setContentView(layout);
}
}
32
33. Straight JavaFX Conversion...
public class HelloVisage extends Activity {
override function onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState);
def context = getApplicationContext();
Functions begin with the
def layout = new LinearLayout(context);
keyword "function"
layout.setOrientation(LinearLayout.VERTICAL);
def text = new TextView(context);
text.setText("Hello World, Long Visage");
layout.addView(text);
setContentView(layout);
}
}
33
34. Straight JavaFX Conversion...
public class HelloVisage extends Activity {
override function onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState);
def context = getApplicationContext();
def layout = new LinearLayout(context); after variable
Type
layout.setOrientation(LinearLayout.VERTICAL); colon)
(separated by
def text = new TextView(context);
text.setText("Hello World, Long Visage");
layout.addView(text);
setContentView(layout);
}
}
34
35. Straight JavaFX Conversion...
public class HelloVisage extends Activity {
override function onCreate(savedInstanceState:Bundle) {
super.onCreate(savedInstanceState);
def context = getApplicationContext();
def layout = new LinearLayout(context);
layout.setOrientation(LinearLayout.VERTICAL);
def text = new TextView(context);
text.setText("Hello World, Long Visage");
layout.addView(text);
Variables declarations
setContentView(layout);
start with "def" or "var"
}
}
35
36. Android JavaFX Code
public class HelloVisage extends Activity {
override var view = LinearLayout {
orientation: Orientation.VERTICAL
view: TextView {
text: "Hello World, Beautified Visage"
}
}
}
36
44. Android Settings
Create a Settings Activity
Populate it with the following preferences:
- Text
- Password
- List
Launch it from the Button control
44
45. Settings Class
public class Settings extends PreferenceActivity {
var usernamePref:EditTextPreference;
var passwordPref:EditTextPreference;
var pollingPref:ListPreference;
override var screen = PreferenceScreen {
preferences: [
…
45
50. Sequence Puzzlers
What is the size of this sequence:
[1..10 step -1]
What does this evaluate to:
[10..<20 step 2][k|k>17]
What is the size of this sequence:
sizeof [20..1 step -3]
54. Visage Operators
> Multiplication and division of two durations is allowed, but not
meaningful
> Underflows/Overflows will fail silently, producing inaccurate
results
> Divide by zero will throw a runtime exception
54
57. Data Binding
A variable or a constant can be bound to an
expression
- var x = bind a + b;
The bound expression is remembered
The dependencies of the expression is watched
Variable is updated lazily when possible
57
58. What Bind Updates
var x = bind if(a) then b else c
x is updated if a or b or c changes
var x = bind for (i in [a..b]) { i * i }
Not everything is recalculated
If a = 1 and b = 2, x is [1, 4]
If b changes to 3, only the added element is
calculated
1 4 9
58
59. Binding to Expressions
Binding to a block
Bound block may contain any number of defs
followed by one expression
Dependencies of block is backtraced from the
expression
Binding to function invocation expression
- Regular function: dependencies are parameters
- Bound function: backtraced from final expression
inside function
59
60. Binding to Object Literals
var a = 3; var b = 4;
var p = bind Point { x: a, y: b };
var q = bind Point { x: bind a, y: b };
var r = bind Point { x: bind a, y: bind b };
When a changes:
- p gets a new instance of Point
- q and r keep the old instance with a new x value
- r will never get a new instance of Point
- (the outer bind in r is useless)
60
61. Integrating Visage and Java
Calling Java from Visage
- Can call Java interface or classes directly
- Automatic conversion to and from Arrays and
Collections
- Can even extend Java interfaces and classes
Calling Visage from Java
- Easiest way is to create a Java interface that Visage
extends
- Can invoke Visage as a script and get results back
61
63. Visage Sequences
Represents collections of homogeneous data
A fundamental container data type
Rich set of language facilities
Contributor to declarative syntax
Automatic conversion to and from Java Arrays
and Collections
63
64. Creating Sequences
Explicit sequence expression
- [1, 3, 5, 7, 9]
Elements are separated by commas
Comma may be omitted if element ends with
brace
1 3 5 7 9
64
65. Creating Sequences
Numeric sequence with range expressions:
- [1..10] 1 2 3 4 5 6 7 8 9 10
Can have a step:
- [1..10 step 2] 1 3 5 7 9
- [0.0..0.9 step 0.1] 0 .1 .2 .3 .4 .5 .6 .7 .8 .9
Can be decreasing:
- [10..1 step -3] 10 7 4 1
Beware of step that goes opposite direction:
- [10..1] is []
Exclusive right end
- [1..<5] 1 2 3 4
66. Getting Info from Sequences
ints = [1, 3, 5, 7, 9]
1 3 5 7 9
[0] [1] [2] [3] [4]
sizeof ints is 5
ints[0] is 1, ints[1] is 3, ..., ints[4] is 9
ints[-1] is 0 (default value of Integer), so is
ints[5]
Object sequence has a default of null
66
67. Getting Slices from Sequences
ints = [1, 3, 5, 7, 9]
1 3 5 7 9
[0] [1] [2] [3] [4]
ints[0..2] is [1, 3, 5]
ints[0..<2] is [1, 3]
ints[2..] is [5, 7, 9]
ints[2..<] is [5, 7]
ints[2..0], ints[-2..-1], ints[5..6] are all []s
67
68. Getting Subsets from Sequences
ints = [1, 3, 5, 7, 9]
1 3 5 7 9
[0] [1] [2] [3] [4]
ints[k | k > 6] is:
- [7, 9] (k > 6 is a condition)
ints[k | indexof k < 2] is:
- [1, 3]
ints[k | k > 10] is:
- []
68