Eugene Lazutkin's course session on DojoX GFX at SVG Open 2007.
(The keynote is here: http://www.slideshare.net/elazutkin/dojox-gfx-keynote-eugene-lazutkin-svg-open-2007/)
This document provides an introduction to programming concepts useful for designing with code, including object oriented programming, frameworks, syntax, classes, objects, functions, variables, and arrays. It explains that arrays allow the creation of multiple variables without defining a new name for each, making the code shorter and easier to read and update. Arrays can store different data types like images or numbers.
- The document discusses JavaScript obfuscation, which is the concealment of intended meaning in JavaScript code to make it confusing and difficult to interpret.
- It covers topics like what obfuscation is, why developers create obfuscated code, JavaScript obfuscation techniques like encoding, hiding variables and eval, and tools that can generate obfuscated code.
- The presenter is an information security professional with over 8 years of experience who enjoys programming in languages like JavaScript, Python and .NET.
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 summarizes Hannes Voigt's presentation on graph abstraction. It discusses matching patterns to bind variables, and using those variables to construct new graph elements through production patterns. It provides examples of simple graph construction and aggregation through grouping. The goal is to introduce an intuitive way to abstract and construct new subgraphs through pattern matching and variable bindings.
Type safe embedded domain-specific languagesArthur Xavier
Language is everything; it governs our lives: from our thought processes, our communication abilities and our understanding of the world, all the way up to law, politics, logic and programming. All of these domains of human experience are governed by different languages that talk to each other, and so should be your code. Haskell provides all the means necessary—and many more—to easily and safely use embedded small languages that are tailored to specific needs and business domains.
In this series of lectures and workshops, we will explore the whats, whys and hows of embedded domain-specific languages in Haskell, and how language oriented programing can bring type-safety, composability and simplicity to the development of complex applications.
This document discusses JavaFX and building rich internet applications. It covers topics like things that can be built with JavaFX, the JavaFX script overview, declarative GUI building using the scene graph, animation, media, deployment, JavaFX Mobile, and web services. Specific techniques covered include JavaFX script features, object literals, data binding, effects like drop shadows, transformations, transitions, keyframe animation, and creating custom nodes.
The document provides an overview of the Ruby programming language with sections on installation, data types, operators, control structures, methods, classes and modules. It discusses key aspects of Ruby like its object oriented nature, dynamic typing, syntax and cross-platform capabilities. The document serves as a quick tour of the Ruby language covering its basic concepts, structures and features.
Kotlin Basics - Apalon Kotlin Sprint Part 2Kirill Rozov
This document provides an overview of Kotlin basics including:
- Basic data types like Int, String, Boolean
- Collections like List, Set, Map
- Variables, functions, control flow
- Classes, properties, constructors
- Inheritance, interfaces
- Additional features like lambdas, extensions, coroutines
It aims to introduce fundamental Kotlin concepts and syntax in a concise manner.
This document provides an introduction to programming concepts useful for designing with code, including object oriented programming, frameworks, syntax, classes, objects, functions, variables, and arrays. It explains that arrays allow the creation of multiple variables without defining a new name for each, making the code shorter and easier to read and update. Arrays can store different data types like images or numbers.
- The document discusses JavaScript obfuscation, which is the concealment of intended meaning in JavaScript code to make it confusing and difficult to interpret.
- It covers topics like what obfuscation is, why developers create obfuscated code, JavaScript obfuscation techniques like encoding, hiding variables and eval, and tools that can generate obfuscated code.
- The presenter is an information security professional with over 8 years of experience who enjoys programming in languages like JavaScript, Python and .NET.
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 summarizes Hannes Voigt's presentation on graph abstraction. It discusses matching patterns to bind variables, and using those variables to construct new graph elements through production patterns. It provides examples of simple graph construction and aggregation through grouping. The goal is to introduce an intuitive way to abstract and construct new subgraphs through pattern matching and variable bindings.
Type safe embedded domain-specific languagesArthur Xavier
Language is everything; it governs our lives: from our thought processes, our communication abilities and our understanding of the world, all the way up to law, politics, logic and programming. All of these domains of human experience are governed by different languages that talk to each other, and so should be your code. Haskell provides all the means necessary—and many more—to easily and safely use embedded small languages that are tailored to specific needs and business domains.
In this series of lectures and workshops, we will explore the whats, whys and hows of embedded domain-specific languages in Haskell, and how language oriented programing can bring type-safety, composability and simplicity to the development of complex applications.
This document discusses JavaFX and building rich internet applications. It covers topics like things that can be built with JavaFX, the JavaFX script overview, declarative GUI building using the scene graph, animation, media, deployment, JavaFX Mobile, and web services. Specific techniques covered include JavaFX script features, object literals, data binding, effects like drop shadows, transformations, transitions, keyframe animation, and creating custom nodes.
The document provides an overview of the Ruby programming language with sections on installation, data types, operators, control structures, methods, classes and modules. It discusses key aspects of Ruby like its object oriented nature, dynamic typing, syntax and cross-platform capabilities. The document serves as a quick tour of the Ruby language covering its basic concepts, structures and features.
Kotlin Basics - Apalon Kotlin Sprint Part 2Kirill Rozov
This document provides an overview of Kotlin basics including:
- Basic data types like Int, String, Boolean
- Collections like List, Set, Map
- Variables, functions, control flow
- Classes, properties, constructors
- Inheritance, interfaces
- Additional features like lambdas, extensions, coroutines
It aims to introduce fundamental Kotlin concepts and syntax in a concise manner.
Lecture on Rubinius for Compiler Construction at University of TwenteDirkjan Bussink
This document summarizes Rubinius, an implementation of the Ruby programming language that includes a bytecode virtual machine written in C++ and Ruby. Some key points:
- Rubinius compiles Ruby code to bytecode that runs on its built-in virtual machine. This provides performance improvements over interpreting Ruby code.
- The virtual machine is implemented in both C++ and Ruby to provide flexibility. It can inline methods, perform just-in-time compilation, and garbage collect memory.
- Rubinius aims to be a complete Ruby implementation while also improving performance through techniques like inline caching, profiling, and garbage collection optimizations.
OSCON Presentation: Developing High Performance Websites and Modern Apps with...Doris Chen
Creating high performance sites and apps is crucial for every developer. In this session, we will explore the best practices and performance tricks, including startup time, UI responsiveness, and Memory efficiency to make your apps running faster and fluid. Come learn the tips, tricks, and tools for maximizing the performance of your sites and apps with JavaScript and HTML5.
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.
This document provides an introduction to jQuery, an open source JavaScript library. It discusses what jQuery is, how it works, selector basics, and many jQuery commands. Key points include:
- jQuery is an open source JavaScript library that makes DOM manipulation and event handling easier. It works across browsers.
- jQuery selectors allow selecting elements using CSS syntax. Common selectors return a jQuery object containing matching elements.
- jQuery methods can be chained together for concise DOM manipulation. Chaining avoids unnecessary re-selection of elements.
- Common jQuery methods covered include manipulating attributes, CSS classes, HTML content, and traversing/filtering the DOM tree. Event handling and custom events are also discussed.
The document discusses Ruby programming concepts including:
- Ruby comes with an interactive REPL tool called irb that allows evaluating Ruby code and viewing results.
- Ruby has common data types like String, Integer, Float, Array and Hash. Arrays and Hashes are versatile data structures.
- Strings provide methods for editing, indexing, case changing and whitespace stripping.
- Arrays allow adding/removing elements, accessing via indexes, slicing, set operations like union and intersection.
The document describes a Die class that simulates rolling a 6-sided die. The Die class defines methods for initializing the die, getting the face value, and rolling the die using a random number generator. Code is provided that instantiates a Die object, rolls it 10,000 times, collects the results in a list, and calculates statistics on the results. It is noted that to simulate a 10-sided die instead of a 6-sided die, the only change needed is to change the 6 to a 10 in the randint method.
Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)Stephen Chin
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.
The document discusses data presentation and geospatial data. It covers experimenting with new applications of existing technology, focusing on the medium and context of use when presenting data. It also discusses issues with representing locations and polygons with single points (centroids) and the need for problem maps that show meta-level understandings rather than just algorithms. The document advocates for an iterative design process focused on the user experience.
Seminar for undergrads at Parsons New School.
How does one identify opportunities to create new things, services, experiences? Are all innovations good? What is the history of innovation and how are innovative ideas and practices integrated in cultural practices? This course explores classic texts on entrepreneurship and innovation while also considering the role of the artist and design as an agent of change, and the nature and promise of technology in the creation of our possible future(s).
Mapfluence is a San Francisco-based company founded in 2003 that provides an on-demand geocatalog of commercial, open, proprietary and custom data through a hosted mapping and data marketplace platform. It aggregates over 10,000 variables on topics like neighborhoods, transportation, climate and demographics. The platform offers web-based GIS functions, APIs to access and visualize spatial data, and tools to create custom maps and analyze relationships in the data. Mapfluence sees trends in 2011 towards widespread sensor data, real-time data applications, open data and challenges of data literacy as more information becomes available.
This document discusses Urban Mapping, a San Francisco-based company founded in 2006 that provides on-demand geoservices and spatial data via API. It sources, standardizes, and curates various types of proprietary spatial and attribute data, including neighborhood boundaries, transportation infrastructure, crime rates, demographics, and more. The document also discusses concepts like metadata, data modeling challenges, and the role of data curation in making raw data useful.
Five years after his original talk about open access to transit data, Urban Mapping CEO Ian White laments the state of affairs around public access to government data and private parties manipulating what it means to have a public resource.
This document discusses big data and metadata. It provides a brief history of metadata from ancient times to present day. It also discusses how metadata and data were previously separate but are now being reunited through new technologies. The document advocates for the importance of data curation and having structured metadata to help make sense of the growing volumes of raw data.
DojoX GFX Keynote Eugene Lazutkin SVG Open 2007Eugene Lazutkin
Eugene Lazutkin's keynote on DojoX GFX at SVG Open 2007.
(The seminar notes are here: http://www.slideshare.net/elazutkin/dojox-gfx-session-eugene-lazutkin-svg-open-2007/)
The document introduces SVGo, a Go library for generating SVG drawings programmatically. It demonstrates how to use SVGo to create basic shapes like rectangles and lines, add attributes, apply transformations, and script interactions. The goal of SVGo is to allow generating consistent SVG views from standardized data.
The document discusses various idioms in Swift including optional binding with guard let and if let, nil coalescing operator, switch statements with optionals and associated values, closures, lazy properties, and computed properties with property observers. Key idioms covered include using guard let to ensure non-nil arguments, extracting associated values from enums using switch, initializing immutable variables with closures, and updating for loops to the Swift 3 syntax.
This document discusses accelerated CSS techniques using tools like CSS frameworks, JavaScript, and CSS preprocessors. It introduces concepts like nested rules, variables, mixins, extends, imports, and powerful functions in CSS preprocessors that allow generating complex CSS from simpler code. CSS frameworks like Blueprint and modules for CSS3 properties are demonstrated. Image sprites are also mentioned briefly.
Processing is a data visualization programming language built on top of Java. It has a strictly typed structure with classes and inheritance. The language uses setup() and draw() methods similarly to OpenGL, with draw() being called continuously. Processing can be used to draw shapes and images, perform math functions, and manipulate the canvas through transformations. It has also been ported to JavaScript as Processing.js to run on HTML5 canvases in web browsers.
This document provides an introduction to Scalable Vector Graphics (SVG). It begins with an agenda that outlines topics including what SVG is, why it should be used, tools for working with SVG, and sample artwork. The document then discusses the history and standards behind SVG, how it works as a vector format, and why it may be preferable to other formats like JPEG, PNG, Flash or Silverlight. Browser support, manual and programmatic production of SVG files, and related resources are also covered. The document concludes with an invitation for questions.
Lecture on Rubinius for Compiler Construction at University of TwenteDirkjan Bussink
This document summarizes Rubinius, an implementation of the Ruby programming language that includes a bytecode virtual machine written in C++ and Ruby. Some key points:
- Rubinius compiles Ruby code to bytecode that runs on its built-in virtual machine. This provides performance improvements over interpreting Ruby code.
- The virtual machine is implemented in both C++ and Ruby to provide flexibility. It can inline methods, perform just-in-time compilation, and garbage collect memory.
- Rubinius aims to be a complete Ruby implementation while also improving performance through techniques like inline caching, profiling, and garbage collection optimizations.
OSCON Presentation: Developing High Performance Websites and Modern Apps with...Doris Chen
Creating high performance sites and apps is crucial for every developer. In this session, we will explore the best practices and performance tricks, including startup time, UI responsiveness, and Memory efficiency to make your apps running faster and fluid. Come learn the tips, tricks, and tools for maximizing the performance of your sites and apps with JavaScript and HTML5.
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.
This document provides an introduction to jQuery, an open source JavaScript library. It discusses what jQuery is, how it works, selector basics, and many jQuery commands. Key points include:
- jQuery is an open source JavaScript library that makes DOM manipulation and event handling easier. It works across browsers.
- jQuery selectors allow selecting elements using CSS syntax. Common selectors return a jQuery object containing matching elements.
- jQuery methods can be chained together for concise DOM manipulation. Chaining avoids unnecessary re-selection of elements.
- Common jQuery methods covered include manipulating attributes, CSS classes, HTML content, and traversing/filtering the DOM tree. Event handling and custom events are also discussed.
The document discusses Ruby programming concepts including:
- Ruby comes with an interactive REPL tool called irb that allows evaluating Ruby code and viewing results.
- Ruby has common data types like String, Integer, Float, Array and Hash. Arrays and Hashes are versatile data structures.
- Strings provide methods for editing, indexing, case changing and whitespace stripping.
- Arrays allow adding/removing elements, accessing via indexes, slicing, set operations like union and intersection.
The document describes a Die class that simulates rolling a 6-sided die. The Die class defines methods for initializing the die, getting the face value, and rolling the die using a random number generator. Code is provided that instantiates a Die object, rolls it 10,000 times, collects the results in a list, and calculates statistics on the results. It is noted that to simulate a 10-sided die instead of a 6-sided die, the only change needed is to change the 6 to a 10 in the randint method.
Cleaner APIs, Cleaner UIs with Visage (33rd Degrees)Stephen Chin
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.
The document discusses data presentation and geospatial data. It covers experimenting with new applications of existing technology, focusing on the medium and context of use when presenting data. It also discusses issues with representing locations and polygons with single points (centroids) and the need for problem maps that show meta-level understandings rather than just algorithms. The document advocates for an iterative design process focused on the user experience.
Seminar for undergrads at Parsons New School.
How does one identify opportunities to create new things, services, experiences? Are all innovations good? What is the history of innovation and how are innovative ideas and practices integrated in cultural practices? This course explores classic texts on entrepreneurship and innovation while also considering the role of the artist and design as an agent of change, and the nature and promise of technology in the creation of our possible future(s).
Mapfluence is a San Francisco-based company founded in 2003 that provides an on-demand geocatalog of commercial, open, proprietary and custom data through a hosted mapping and data marketplace platform. It aggregates over 10,000 variables on topics like neighborhoods, transportation, climate and demographics. The platform offers web-based GIS functions, APIs to access and visualize spatial data, and tools to create custom maps and analyze relationships in the data. Mapfluence sees trends in 2011 towards widespread sensor data, real-time data applications, open data and challenges of data literacy as more information becomes available.
This document discusses Urban Mapping, a San Francisco-based company founded in 2006 that provides on-demand geoservices and spatial data via API. It sources, standardizes, and curates various types of proprietary spatial and attribute data, including neighborhood boundaries, transportation infrastructure, crime rates, demographics, and more. The document also discusses concepts like metadata, data modeling challenges, and the role of data curation in making raw data useful.
Five years after his original talk about open access to transit data, Urban Mapping CEO Ian White laments the state of affairs around public access to government data and private parties manipulating what it means to have a public resource.
This document discusses big data and metadata. It provides a brief history of metadata from ancient times to present day. It also discusses how metadata and data were previously separate but are now being reunited through new technologies. The document advocates for the importance of data curation and having structured metadata to help make sense of the growing volumes of raw data.
DojoX GFX Keynote Eugene Lazutkin SVG Open 2007Eugene Lazutkin
Eugene Lazutkin's keynote on DojoX GFX at SVG Open 2007.
(The seminar notes are here: http://www.slideshare.net/elazutkin/dojox-gfx-session-eugene-lazutkin-svg-open-2007/)
The document introduces SVGo, a Go library for generating SVG drawings programmatically. It demonstrates how to use SVGo to create basic shapes like rectangles and lines, add attributes, apply transformations, and script interactions. The goal of SVGo is to allow generating consistent SVG views from standardized data.
The document discusses various idioms in Swift including optional binding with guard let and if let, nil coalescing operator, switch statements with optionals and associated values, closures, lazy properties, and computed properties with property observers. Key idioms covered include using guard let to ensure non-nil arguments, extracting associated values from enums using switch, initializing immutable variables with closures, and updating for loops to the Swift 3 syntax.
This document discusses accelerated CSS techniques using tools like CSS frameworks, JavaScript, and CSS preprocessors. It introduces concepts like nested rules, variables, mixins, extends, imports, and powerful functions in CSS preprocessors that allow generating complex CSS from simpler code. CSS frameworks like Blueprint and modules for CSS3 properties are demonstrated. Image sprites are also mentioned briefly.
Processing is a data visualization programming language built on top of Java. It has a strictly typed structure with classes and inheritance. The language uses setup() and draw() methods similarly to OpenGL, with draw() being called continuously. Processing can be used to draw shapes and images, perform math functions, and manipulate the canvas through transformations. It has also been ported to JavaScript as Processing.js to run on HTML5 canvases in web browsers.
This document provides an introduction to Scalable Vector Graphics (SVG). It begins with an agenda that outlines topics including what SVG is, why it should be used, tools for working with SVG, and sample artwork. The document then discusses the history and standards behind SVG, how it works as a vector format, and why it may be preferable to other formats like JPEG, PNG, Flash or Silverlight. Browser support, manual and programmatic production of SVG files, and related resources are also covered. The document concludes with an invitation for questions.
The document discusses Android drawing and animation. It covers drawing using drawables, shapes, and custom views. It also covers view animation, which includes tween animation defined in XML files to transition views between states, and frame animation to transition between drawables. The document also introduces the Android property animation system for animating any object properties.
Sassive Aggressive: Using Sass to Make Your Life Easier (Refresh Boston Version)Adam Darowski
Sass, which stands for "Syntactically Awesome Stylesheets", is a meta-language that provides simpler, more elegant syntax for CSS. Joel Oliveira and Adam Darowski will explain how Sass can improve your CSS-wrangling quality of life. They will explain what Sass is, what the benefits are, and go through some step-by-step examples of how you can put it to use in your own workflow.
Stylus is a CSS preprocessor that aims to simplify CSS by removing syntactic sugar like brackets and semicolons, enforcing indentation, and allowing variables, mixins, and nested selectors. Nib is a library of mixins, utilities, and components for Stylus that handles vendor prefixes and provides things like clearfixes and hiding text. Together, Stylus and Nib allow for more concise and maintainable CSS code.
This document discusses using SVG (Scalable Vector Graphics) for generating professional reports with PHP. It provides an overview of SVG, support for SVG in browsers and tools, and PHP libraries for working with SVG, including PEAR::XML_SVG for building SVG documents programmatically, and PEAR::Image_Canvas and PEAR::Image_Graph for generating charts and graphs in SVG format. Examples of code snippets are provided to demonstrate how to create simple SVG charts and graphs using these PHP libraries.
The document provides an overview of advanced CSS techniques, including:
- Advanced CSS selectors like attribute selectors to target specific links, forms, and images.
- Box shadow spread to create the effect of multiple borders.
- Using border-radius to create flexible ellipse containers.
- CSS3 cursor properties, pointer events, transitions, and CSS arrows.
- Background patterns using gradients, and beautiful button styles using hover interactions and transitions.
- The Prefix Free CSS library to write CSS properties without vendor prefixes.
Support levels and browser compatibility are provided for each technique. The document aims to teach advanced styling options in CSS.
This document discusses using graphics to teach core Python concepts. It describes some challenges in using graphics APIs that are too complex or produce trivial results. Some solutions proposed are wrapping graphics APIs to simplify them, reusing code through classes, and using simple algorithms that generate complex patterns. Examples provided include using the POV-Ray and PIL libraries to generate 3D shapes and fractal images, as well as cellular automata with Tkinter. The goal is to focus on core Python concepts while producing interesting visual results.
This document provides an introduction to functional programming concepts and the Scala programming language. It begins with a brief history of object-oriented programming and why it became popular. It then discusses why functional programming has gained popularity in recent years due to its ability to handle parallel, reactive and distributed systems through immutable data and avoidance of mutable state. The document introduces functional programming concepts like immutable data, first-class functions and purity. It provides an example of functional-style programming in Scala. Finally, it outlines topics that will be covered about practical functional programming in Scala, including collections, functions, pattern matching and lazy evaluation.
Here is a function to calculate the factorial of an integer N using a for loop:
function fact = factorial(N)
fact = 1;
for i = 1:N
fact = fact * i;
end
end
To test it:
N = 5;
result = factorial(N);
This function:
1. Initializes the factorial variable fact to 1 outside the loop
2. Uses a for loop from 1 to N to iterate over the integers
3. On each iteration, it multiplies the running fact variable by the current integer i
4. After the loop, fact will contain the final factorial
This document provides an overview of jQuery, a JavaScript library for DOM scripting. It discusses why libraries like jQuery are useful for making DOM scripting easy and handling cross-browser compatibility issues. The core features of jQuery are then summarized, including selectors, DOM manipulation, events, effects, Ajax functionality, and utilities. Examples are provided throughout to illustrate how various jQuery methods work.
CSS3 For WebKit: iPadDevCamp PresentationEstelle Weyl
Internet Explorer may be holding you back on the desktop, but don't let that stop you from creating kick ass web apps on webkit mobile devices. In this session we'll cover support of CSS3 in webkit. Learn how to use CSS3 to create fabulous looking web apps without the use (or with minimal use) of images.
This document provides an overview of JavaFX and its capabilities for building rich internet applications (RIAs). It discusses things that can be built with JavaFX including sample apps. It also covers JavaFX script which uses a declarative syntax, the scene graph structure, effects, interactions, transformations, binding, and drag and drop. The document contains code examples for many of these concepts.
Similar to DojoX GFX Session Eugene Lazutkin SVG Open 2007 (20)
Efficient client-server interactions make or break a web application. This talk as about advanced techniques, which can be used with popular frameworks, to improve performance, and simplify data manipulations.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
Harper Reed, the keynote speaker, discussed his experience as CTO of Obama for America's 2012 campaign, noting the massive scale of building technology for a presidential campaign. Other speakers discussed emerging technologies like touch screens, CSS preprocessors, single-page applications, server-side tools for testing, Node.js streams and events, open source challenges, and crafting URLs independent of content management systems. Overall the conference covered front-end development, web applications, Node.js, and rethinking technologies.
My talking points for the presentation on optimization of modern web applications. It is a huge topic, and I concentrated mostly on technical aspects of it.
Server-side JavaScript (SSJS) is gaining popularity due to factors like the rise of NoSQL databases, asynchronous programming, and JavaScript's ubiquity. SSJS environments like Node.js, CommonJS, and AppEngineJS allow developers to use JavaScript beyond the browser by running it on the server. Google App Engine also provides a platform for hosting SSJS applications and automatically scaling them.
This document summarizes Eugene Lazutkin's talk on programmer's tools and how Dojo supports different programming paradigms in JavaScript. The talk discusses code structuring techniques like modules, object-oriented programming, mixins, and how Dojo implements these patterns through features like dojo.declare and dojo.require. It also mentions asynchronous programming tools in Dojo and other topics not covered in the talk like widgets and graphics.
This document discusses exciting features of JavaScript including how it can be used in browsers and non-browser environments. It covers how JavaScript supports object-oriented, functional, and aspect-oriented programming paradigms through its first-class functions, closures, and other language features. The document also discusses how code generation and introspection are possible in JavaScript and how this enables implementing domain-specific languages through techniques like lambda functions. In conclusion, the author expresses optimism about JavaScript's potential for large-scale development.
More details on the form manager, and advanced techniques. It was delivered at dojo.connect on 2/10/2010. Blog post: http://lazutkin.com/blog/2010/feb/10/rad-crud/
JavaScript and popular programming paradigms (OOP, AOP, FP, DSL). Overview of the language to see what tools we can leverage to reduce complexity of our projects.
This part goes over language features and looks at OOP and AOP with JavaScript.
The presentation was delivered at ClubAJAX on 2/2/2010.
Blog post: http://lazutkin.com/blog/2010/feb/5/exciting-js-1/
Continued in Part II: http://www.slideshare.net/elazutkin/exciting-javascript-part-ii
CRUD, form management, and how Dojo solves it. It was delivered at ClubAJAX on 12/2/2009. Blog post: http://lazutkin.com/blog/2009/dec/2/crud-with-dojo/
The document provides an overview of the Dojo Toolkit and its components for graphics and charting. It discusses the major objects in Dojo GFX for creating and manipulating shapes, as well as transformations and rendering. It also covers the major players in Dojo Charting, including plots, axes, data series, and actions for processing events. The document concludes with suggestions for building a simple image viewer and interactive chart as examples.
This document discusses Dojo GFX, a cross-browser graphics package for creating interactive graphics. It supports backends like SVG, VML, Canvas and Silverlight. The document outlines that SVG is used as a benchmark and recommended choice, and that Dojo GFX code is smallest for the SVG renderer. Real-world examples of Dojo GFX include engineering drawings, mapping, user interfaces and charts.
Maruthi Prithivirajan, Head of ASEAN & IN Solution Architecture, Neo4j
Get an inside look at the latest Neo4j innovations that enable relationship-driven intelligence at scale. Learn more about the newest cloud integrations and product enhancements that make Neo4j an essential choice for developers building apps with interconnected data and generative AI.
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
Threats to mobile devices are more prevalent and increasing in scope and complexity. Users of mobile devices desire to take full advantage of the features
available on those devices, but many of the features provide convenience and capability but sacrifice security. This best practices guide outlines steps the users can take to better protect personal devices and information.
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofsAlex Pruden
This paper presents Reef, a system for generating publicly verifiable succinct non-interactive zero-knowledge proofs that a committed document matches or does not match a regular expression. We describe applications such as proving the strength of passwords, the provenance of email despite redactions, the validity of oblivious DNS queries, and the existence of mutations in DNA. Reef supports the Perl Compatible Regular Expression syntax, including wildcards, alternation, ranges, capture groups, Kleene star, negations, and lookarounds. Reef introduces a new type of automata, Skipping Alternating Finite Automata (SAFA), that skips irrelevant parts of a document when producing proofs without undermining soundness, and instantiates SAFA with a lookup argument. Our experimental evaluation confirms that Reef can generate proofs for documents with 32M characters; the proofs are small and cheap to verify (under a second).
Paper: https://eprint.iacr.org/2023/1886
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
UiPath Test Automation using UiPath Test Suite series, part 6DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 6. In this session, we will cover Test Automation with generative AI and Open AI.
UiPath Test Automation with generative AI and Open AI webinar offers an in-depth exploration of leveraging cutting-edge technologies for test automation within the UiPath platform. Attendees will delve into the integration of generative AI, a test automation solution, with Open AI advanced natural language processing capabilities.
Throughout the session, participants will discover how this synergy empowers testers to automate repetitive tasks, enhance testing accuracy, and expedite the software testing life cycle. Topics covered include the seamless integration process, practical use cases, and the benefits of harnessing AI-driven automation for UiPath testing initiatives. By attending this webinar, testers, and automation professionals can gain valuable insights into harnessing the power of AI to optimize their test automation workflows within the UiPath ecosystem, ultimately driving efficiency and quality in software development processes.
What will you get from this session?
1. Insights into integrating generative AI.
2. Understanding how this integration enhances test automation within the UiPath platform
3. Practical demonstrations
4. Exploration of real-world use cases illustrating the benefits of AI-driven test automation for UiPath
Topics covered:
What is generative AI
Test Automation with generative AI and Open AI.
UiPath integration with generative AI
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
In his public lecture, Christian Timmerer provides insights into the fascinating history of video streaming, starting from its humble beginnings before YouTube to the groundbreaking technologies that now dominate platforms like Netflix and ORF ON. Timmerer also presents provocative contributions of his own that have significantly influenced the industry. He concludes by looking at future challenges and invites the audience to join in a discussion.
“An Outlook of the Ongoing and Future Relationship between Blockchain Technologies and Process-aware Information Systems.” Invited talk at the joint workshop on Blockchain for Information Systems (BC4IS) and Blockchain for Trusted Data Sharing (B4TDS), co-located with with the 36th International Conference on Advanced Information Systems Engineering (CAiSE), 3 June 2024, Limassol, Cyprus.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Dr. Sean Tan, Head of Data Science, Changi Airport Group
Discover how Changi Airport Group (CAG) leverages graph technologies and generative AI to revolutionize their search capabilities. This session delves into the unique search needs of CAG’s diverse passengers and customers, showcasing how graph data structures enhance the accuracy and relevance of AI-generated search results, mitigating the risk of “hallucinations” and improving the overall customer journey.
1. DojoX GFX
Eugene Lazutkin
Dojo Toolkit/Sun Microsystems
SVG Open 2007, Tokyo, Japan
2. Welcome to Dojo
Dojo consists of three sub-projects:
●
Dojo Core (a.k.a. Dojo)
–
Includes Dojo Base — always available basic
●
functionality.
Dijit
–
Set of core widgets aimed at simplification of UI
●
creation.
DojoX (a.k.a. Dojo eXtended/eXperimental)
–
Advanced functionality, experimental code.
●
DojoX GFX is part of DojoX.
●
3. Intro I
GFX loosely follows the SVG model.
●
The length unit is pixel.
●
Point definition:
●
{x: 0, y: 0}
–
JavaScript-specific features:
●
Duck-typing is used where possible.
–
All setters are chained.
–
4. Intro II
At present time following backends are
●
supported:
SVG.
–
VML.
–
Silverlight.
–
We strive to be as portable as possible,
●
but restricted (mostly by VML).
Always test your program in target
–
environments!
5. Intro III
GFX defines six classes of objects:
●
Shape.
–
Important shape: group.
●
Fill.
–
Stroke.
–
Font.
–
Matrix.
–
Surface.
–
Serves as a top-level group.
●
6. Colors I
GFX includes dojo.Color() by default.
●
dojo.Color (part of Dojo Base):
●
Defines common color names,
–
representations (hex, rgb/rgba, array).
dojo.colors module adds the CSS3 support
–
and extended set of color names.
GFX accepts a large set of color
●
definitions directly.
8. Shapes I
Following shapes are defined:
●
Basic shapes: rectangle, ellipse,
–
polyline/polygon, path, image, text.
Convenient shapes: circle, line.
–
Experimental shapes: textpath.
–
Cheatsheet for all definition objects:
●
dojox/gfx/_base.js (right after utility
–
definitions).
9. Shapes II
Each shape is made up of two objects:
●
Shape definition.
–
Describes a geometry.
●
Simple JSON object.
●
Can be serialized, and streamed.
–
Full support for duck-typing.
●
No need to specify default values.
–
Shape object.
–
Represents an instantiated shape.
●
Provides an OO-based interface.
●
Keeps a shape definition object.
●
10. Shapes III
Every shape supports following methods:
●
getShape/setShape.
–
Access to the underlying shape definition.
●
Each shape accepts only shape-specific
●
definitions.
getFill/setFill, getStroke/setStroke.
–
Access to current fill and stroke definitions.
●
getTransform/setTransform,
–
applyRightTransform/applyLeftTransform.
Transformation manipulations.
●
applyTransform == applyRightTransform.
●
11. Shapes IV
Every shape supports following methods:
●
moveToFront/moveToBack.
–
Z-order manipulations.
●
getParent, remove.
–
Parent-related manipulations.
●
connect/disconnect.
–
Event processing.
●
Experimental introspection methods.
–
Shape objects are defined by renderers.
●
13. Surface I
Defines a drawing area.
●
Serves as a top-level group object.
●
Defines shape creators:
●
createPath, createRect, createCircle,
–
createEllipse,createLine, createPolyline,
createImage, createText, createTextPath.
Shape's type is implied.
●
createShape.
–
You should specify a type.
●
createGroup.
–
14. Surface II
Surface is a renderer-specific object.
●
It supports the same event interface as
●
shapes.
Surface creation:
●
dojox.gfx.createSurface(domNode, width,
–
height).
15. Rectangle
Definition with defaults:
●
{type: quot;rectquot;, x: 0, y: 0, width: 100, height:
–
100, r: 0}.
As always you can skip any default values.
–
What is “r”? It is a radius of rounded corners.
–
Creator method:
●
createRect(rect).
–
17. Stroke II
Definition with defaults:
●
{type: quot;strokequot;, color: quot;blackquot;, style: quot;solidquot;,
–
width: 1, cap: quot;buttquot;, join: 4}.
Joins:
–
“Round”, “Square”.
●
If number, miter-type join is used.
●
“null” means “use default”, which is “no
●
stroke” at the moment.
A string is interpreted as a solid color
●
stroke.
18. Fill I
There are four types of fill:
●
Solid fill (specified by a color object).
–
Shortcuts are okay.
●
Linear gradient.
–
Radial gradient.
–
Tiled pattern.
–
null — use default (“no fill”).
–
19. Fill II
Linear gradient definition with defaults:
●
{type: quot;linearquot;, x1: 0, y1: 0, x2: 100, y2: 100,
–
colors: [{offset: 0, color: quot;blackquot;}, {offset: 1,
color: quot;whitequot;}]}
colors member defines an array of color
–
stops.
Be careful:
●
VML renderer doesn't support opacity for
–
color stops.
20. Fill III
Radial gradient definition with defaults:
●
{type: quot;radialquot;, cx: 0, cy: 0, r: 100, colors:
–
[{offset: 0, color: quot;blackquot;}, {offset: 1, color:
quot;whitequot;}]}
Very similar to the linear gradient.
–
Be careful:
●
VML uses very peculiar (and visually
–
incompatible) algorithm to render the radial
gradient.
21. Fill IV
Pattern definition with defaults:
●
{type: quot;patternquot;, x: 0, y: 0, width: 0, height:
–
0, src: quot;quot;}
Similar to the image shape definition.
–
Be careful:
●
Firefox SVG does not implement this fill style
–
yet.
22. Line
Definition with defaults:
●
{type: quot;linequot;, x1: 0, y1: 0, x2: 100, y2: 100}
–
Creator method:
●
createLine(line).
–
This is a redundant shape.
●
Can be easily simulated by polyline.
–
Yet frequently asked for especially by
–
novices.
Obviously it doesn't support setFill().
●
23. Group I
Defines all creators just like Surface.
●
Used to group other shapes.
●
Can have other groups as children.
–
Propagates events, and transformations.
–
Propagation for fill/stroke/font is planned.
–
No shape definition.
●
Creator method:
●
createGroup().
–
24. Group II
Group-specific API:
●
add(shape)
–
Adds a shape to the group removing it from the
●
previous parent.
remove(shape)
–
Removes a shape from the group making it stand-
●
alone.
clear()
–
Removes all shapes.
●
25. Circle
Definition with defaults:
●
{type: quot;circlequot;, cx: 0, cy: 0, r: 100}
–
Creator method:
●
createCircle(circle).
–
This is a redundant shape.
●
Can be easily simulated by ellipse.
–
Yet frequently asked for especially by
–
novices.
27. Polyline
Definition with defaults:
●
{type: quot;polylinequot;, points: []}
–
points is an array of points.
–
Array of numbers is permitted.
●
In this case numbers should go in pairs in [x, y]
●
order.
Doubles for polygon.
●
If you want a closed polygon, do it explicitly.
–
Creator method:
●
createPolyline(polyline)
–
28. Path I
Definition with defaults:
●
{type: quot;pathquot;, path: quot;quot;}
–
path uses the SVG notation.
–
Path is a super-shape:
●
It can emulate all other geometric shapes.
–
Exceptions: image, text, textpath.
–
Creator method:
●
createPath(path)
–
29. Path II
Path-specific API:
●
getAbsoluteMode/setAbsoluteMode
–
true for absolute mode, and false for relative
●
mode.
getLastPosition
–
Returns a point in absolute coordinates.
●
moveTo, lineTo, hLineTo, vLineTo, closePath
–
curveTo, smoothCurveTo, qCurveTo,
–
qSmoothCurveTo
arcTo
–
30. Path III
Shortcut:
●
If you specify a string, creator assumes it is a
–
path definition.
Be careful:
●
VML doesn't support sub-pixel coordinates.
–
31. Image I
Definition with defaults:
●
{type: quot;imagequot;, x: 0, y: 0, width: 0, height: 0,
–
src: quot;quot;}
By specifying different width/height, you can
–
stretch the image.
Obviously setFill/setStroke are not
●
supported.
32. Image II
Be careful:
●
VML has problems displaying PNG files with
–
opacity.
Silverlight doesn't support GIF.
–
33. Text I
Definition with defaults:
●
{type: quot;textquot;, x: 0, y: 0, text: quot;quot;, align: quot;startquot;,
–
decoration: quot;nonequot;, rotated: false, kerning:
true}
Alignment:
–
“start”, “end”, “middle” relative to the anchor
●
point.
Decoration:
–
“underline”, “none”.
●
Rotated:
–
If true, rotates each character 90 degrees CCW.
●
34. Text II
Text-specific methods:
●
getFont/setFont
–
Assigns a font definition to the shape.
–
Be careful:
●
Kerning is not supported by some renderers.
–
Safari 3 beta doesn't support rotation.
–
36. Font II
family is a font name.
●
Predefined names: “serif”, “sans-serif”,
–
“times”, “helvetica”, “monotone”.
This fonts are mapped to platform-specific
●
equivalents.
VML on IE7 ignores family and always uses
–
Arial.
SVG on Firefox ignores family in many cases.
–
Silverlight supports only predefined fonts.
–
37. TextPath
Be careful:
●
Highly experimental.
–
Inconsistent support.
–
API is unfinished.
–
Definition with defaults:
●
{type: quot;textpathquot;, text: quot;quot;, align: quot;startquot;,
–
decoration: quot;nonequot;, rotated: false, kerning:
true }
Supports a subset of the text definition.
–
38. Matrix I
Standard 2D matrix:
●
{xx: 1, xy: 0, yx: 0, yy: 1, dx: 0, dy: 0}
–
You can use duck-typing skipping defaults.
–
Defined in dojox.gfx.matrix as Matrix2D.
–
Propagated up to dojo.gfx.Matrix2D.
–
40. Matrix III
Supports all common operations:
●
Skewing:
–
skewX(rad)
●
skewXg(deg)
●
skewY(rad)
●
skewYg(deg)
●
41. Matrix IV
Supports all common operations:
●
General transformations:
–
invert(matrix)
●
reflect(a, b) — forms a reflection matrix.
●
project(a, b) — forms an orthogonal projection
●
matrix.
normalize(matrix) — produces Matrix2D, if
●
necessary.
clone(matrix) — creates a copy.
●
multiply(m1, m2, ...)
●
multiplyPoint(matrix, x, y)
●
42. Matrix V
Provides “at” versions for some
●
transformations.
“At” implements the “transform at the point”
–
operation:
xxxAt(arg, x, y) is equivalent to:
●
translate(x, y) * xxx(arg) * translate(-x, -y)
●
Provided methods:
–
scaleAt, rotateAt, rotategAt, skewXAt, skewXgAt,
●
skewYAt, skewYgAt.
43. Matrix VI
Shortcuts:
●
Array of matrices is normalized by
–
multiplying its elements sequentially left to
right.
By default all incoming matrices are
–
normalized in GFX.