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/
Forms are inevitable. Forms are hard. Forms with React sometimes even harder. In this talk, we’ll start by exploring best practices to efficiently work with react/redux forms and proceed with building a custom abstraction layer for easier form management.
This document provides an overview of creating a module in Odoo (OpenERP) to manage daily transactions. It discusses modelling the transaction attributes like subject, date, amount in the daily_transaction.py file. It also covers generating the necessary views like menus, list views and forms through XML configuration in the daily_transaction_view.xml file. Actions are defined to link the menu items to the appropriate views and CRUD operations. Once the module files and configurations are set up, the module is installed to enable managing transactions from the new menu item.
This document discusses object-oriented programming concepts like classes, objects, encapsulation, inheritance, polymorphism. It provides examples using a BankAccount class to demonstrate these concepts. A class defines attributes and behaviors for objects. Objects are instances of a class. Encapsulation hides implementation details and inheritance allows derived classes to extend existing classes. Polymorphism allows objects to take on different forms through inheritance. The instanceof operator is used to check an object's specific type.
360iDev Presentation this year:
As a contract iOS programmer, I spend about 80% of my time working with other people's iOS code - either working as a part of existing teams or taking over incomplete projects from developers who are no longer around. Along the way, I've gathered a list of the common mistakes I've seen people make, the open-source libraries I've seen people misuse the most, and the really simple code changes that can make huge differences in the reliability and performance of your apps. For each mistake or anti-pattern, I'll have an explanation of the issue with it, and at least one potential remedy or remediation that could be taken.
This talk will have a lot of specific code examples on a number of different topics and technologies, so hopefully everyone will learn something. And hopefully at least something will save you some time.
Note that this will be a very opinionated talk, and I'm quite likely to step on someone's pet pattern, so there may be fireworks.
This document introduces aspect-oriented programming (AOP) and how it can be used to separate cross-cutting concerns from core business logic. It discusses how AOP frameworks like PostSharp allow aspects to modularize features like logging, transactions, and security. The document provides an example of how a rental booking method grows over time to include these concerns. It compares different AOP frameworks and concludes that PostSharp allows building aspects with strong robustness while minimizing code invasiveness.
Web services are a set of tools available over the internet or intranet networks which use the standardized messaging system to transfer data between applications or systems.
Web services allow interaction between different systems or applications using standard libraries such as HTML, XML, WSDL, and SOAP.
2011-06-27 - AOP - .NET User Group Rhein NeckarJohannes Hoppe
The document provides an introduction to aspect-oriented programming with .NET. It discusses various cross-cutting concerns like logging, exceptions, validation, and caching that can be addressed using aspect-oriented programming. It also demonstrates how aspects are used to modify the intermediate language (IL) code to inject cross-cutting behavior before, after, and around method calls. Various aspect oriented programming frameworks for .NET are also mentioned.
1. The document discusses applying architectural patterns and principles like logging, validation, transactions, and exception handling to business logic code in .NET.
2. It shows an example of refactoring a method that rents a book to a customer to add logging, validate method parameters, retry transactions using a scope, and handle exceptions.
3. By applying these techniques, the business logic is made more robust, maintainable, and aligned with best practices for .NET development.
Forms are inevitable. Forms are hard. Forms with React sometimes even harder. In this talk, we’ll start by exploring best practices to efficiently work with react/redux forms and proceed with building a custom abstraction layer for easier form management.
This document provides an overview of creating a module in Odoo (OpenERP) to manage daily transactions. It discusses modelling the transaction attributes like subject, date, amount in the daily_transaction.py file. It also covers generating the necessary views like menus, list views and forms through XML configuration in the daily_transaction_view.xml file. Actions are defined to link the menu items to the appropriate views and CRUD operations. Once the module files and configurations are set up, the module is installed to enable managing transactions from the new menu item.
This document discusses object-oriented programming concepts like classes, objects, encapsulation, inheritance, polymorphism. It provides examples using a BankAccount class to demonstrate these concepts. A class defines attributes and behaviors for objects. Objects are instances of a class. Encapsulation hides implementation details and inheritance allows derived classes to extend existing classes. Polymorphism allows objects to take on different forms through inheritance. The instanceof operator is used to check an object's specific type.
360iDev Presentation this year:
As a contract iOS programmer, I spend about 80% of my time working with other people's iOS code - either working as a part of existing teams or taking over incomplete projects from developers who are no longer around. Along the way, I've gathered a list of the common mistakes I've seen people make, the open-source libraries I've seen people misuse the most, and the really simple code changes that can make huge differences in the reliability and performance of your apps. For each mistake or anti-pattern, I'll have an explanation of the issue with it, and at least one potential remedy or remediation that could be taken.
This talk will have a lot of specific code examples on a number of different topics and technologies, so hopefully everyone will learn something. And hopefully at least something will save you some time.
Note that this will be a very opinionated talk, and I'm quite likely to step on someone's pet pattern, so there may be fireworks.
This document introduces aspect-oriented programming (AOP) and how it can be used to separate cross-cutting concerns from core business logic. It discusses how AOP frameworks like PostSharp allow aspects to modularize features like logging, transactions, and security. The document provides an example of how a rental booking method grows over time to include these concerns. It compares different AOP frameworks and concludes that PostSharp allows building aspects with strong robustness while minimizing code invasiveness.
Web services are a set of tools available over the internet or intranet networks which use the standardized messaging system to transfer data between applications or systems.
Web services allow interaction between different systems or applications using standard libraries such as HTML, XML, WSDL, and SOAP.
2011-06-27 - AOP - .NET User Group Rhein NeckarJohannes Hoppe
The document provides an introduction to aspect-oriented programming with .NET. It discusses various cross-cutting concerns like logging, exceptions, validation, and caching that can be addressed using aspect-oriented programming. It also demonstrates how aspects are used to modify the intermediate language (IL) code to inject cross-cutting behavior before, after, and around method calls. Various aspect oriented programming frameworks for .NET are also mentioned.
1. The document discusses applying architectural patterns and principles like logging, validation, transactions, and exception handling to business logic code in .NET.
2. It shows an example of refactoring a method that rents a book to a customer to add logging, validate method parameters, retry transactions using a scope, and handle exceptions.
3. By applying these techniques, the business logic is made more robust, maintainable, and aligned with best practices for .NET development.
Practical JavaScript Programming - Session 4/8Wilson Su
JavaScript is one of the most popular skills in today’s job market. It allows you to create both client- and server-side applications quickly and easily. Having a solid understanding of this powerful and versatile language is essential to anyone who uses it.
“Practical JavaScript Programming” does not only focus on best practices, but also introduces the fundamental concepts. This course will take you from JavaScript basics to advanced. You’ll learn about topics like Data Types, Functions, Events, AJAX and more.
This document provides an overview of Visual Basic 6.0 and how to create a basic application. It outlines the objectives of learning Visual Basic and describes key concepts like the event-driven nature of VB applications. The document explains the structure of a VB project, including forms, controls, properties, methods and events. It also demonstrates how to set control properties, write code, declare variables, and use common functions and operators. Finally, it provides examples for creating a stopwatch timer application and a basic text editor application in VB.
First steps to create a basic app with ZF: using action methods, databases, and forms. From February presentation at ZF-NYC meetup. More to follow in March meetup.
This document outlines the modules and content covered in a JavaScript and ExtJS training course. Module 1 covers the basics of JavaScript, including elements of a JavaScript program, statements, functions, objects, arrays, and events. Module 2 provides an introduction to ExtJS and its fundamental classes. Module 3 continues ExtJS coverage, focusing on components, data stores, templates, and classes. Module 4 covers internationalization, drag and drop, common components like grids and trees, and application best practices in ExtJS. The objectives are to learn how to write JavaScript code using basic elements and create windows/dialog boxes, use built-in objects, handle events, manipulate forms, and integrate JavaScript with Java.
The document discusses client-side JavaScript and DOM (Document Object Model) manipulation. It covers the window object, DOM programming interface, DOM element types like Node and HTML Element. Methods for accessing elements like getElementById(), getElementsByName(), and querySelector() are explained. Working with element attributes, innerHTML, and traversing the DOM using childNodes and parentNode properties are also summarized. The presentation aims to explain DOM and how JavaScript can be used to get, change, add or remove HTML elements.
javascript Event Handling and introduction to event.pptLalith86
This document provides an overview of event handling in JavaScript. It discusses how event handlers allow programs to capture and respond to events, making them event-driven. It describes two methods for handling events - inline JavaScript and defining functions in the head. Common event handlers like onClick, onMouseOver, onFocus, onBlur, onLoad and onUnload are presented along with examples. The document aims to help readers understand the concept and benefits of event handlers and write simple programs using them.
LEARNING iPAD STORYBOARDS IN OBJ-‐C LESSON 1Rich Helton
This document provides an introduction to using storyboards in Objective-C on iOS. It begins with a disclaimer and then defines some key concepts about storyboards, including that they provide a visual representation of an app's user interface and allow transitions between scenes. It discusses storyboard files, segues, the dock, and scenes. It then walks through adding elements to a sample master-detail app project in Xcode like a model class, data controller, and table view controller. It includes links to Apple documentation for additional reference. The overall purpose is to explain the basics of using storyboards for app development in Objective-C on iOS.
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/
Presenting Data – An Alternative to the View ControlTeamstudio
In this webinar, Paul Della-Nebbia, an IBM Champion, will show how to implement a different alternative for displaying information from Domino views. Paul will cover how to use the Dojo Data Grid (included with XPages) to display a data grid that provides unique features like infinite scrolling, click to sort column headers, adjustable column widths, filtering, and the ability to drag and drop column headers to reorder. As the user scrolls through, the view data is retrieved as needed which improves performance and usability.
The Android user interface (UI) is composed of interactive visual elements called views and view groups. Views are used to display things on screen and can be defined in code or XML layout files. Common views include text views, buttons, and image views. Layouts organize views in different visual structures and can also be defined in code or XML. Common layouts include linear, relative, grid, and list. Interaction events like clicks are handled using listeners. Menus, dialogs, notifications, and toasts are also key UI components.
This document provides an introduction to Xcode, the integrated development environment (IDE) for building iOS apps. It describes the main parts of Xcode including the navigator panel, inspector panel, libraries and frameworks. It also explains key concepts like the model-view-controller (MVC) pattern, outlets and actions, view controllers and their lifecycles, navigation controllers, table views, and the iOS application lifecycle.
The document discusses the Oracle development tool D2K (Developer 2000). It provides information on what D2K is, the different versions, how to develop applications using it, and the key components and objects used in application development. D2K can be used to develop web-based applications and supports technologies like Java, HTML and connectivity to different databases. It uses a RAD approach to minimize coding and improve productivity.
This document provides an overview of the client-side JavaScript frameworks jQuery and Dojo. It discusses what each framework is used for, how to get started with them, and provides examples of common tasks like DOM manipulation, events, animations, and AJAX calls. Key aspects covered include Dojo's modular toolkit structure, pre-built widgets, and drag-and-drop functionality. jQuery is introduced as a simpler framework for selecting elements and handling events. The document concludes that both frameworks accomplish similar goals but that Dojo offers more granular libraries, while jQuery may be easier to get started with.
Tutorial on building an Application using Appcelerator Titanium Alloy MVC source code available here https://github.com/aaronksaunders/SimpleAlloyPresentationApp
VIDEOS - https://www.youtube.com/channel/UCMCcqbJpyL3LAv3PJeYz2bg
MORE SLIDES - complete overview of Alloy Available here
http://www.slideshare.net/aaronksaunders/modev-east2012
Visual Basic is an event-driven programming language developed by Microsoft. It was introduced in 1991 and helped popularize graphical user interface (GUI) programming. Some key points:
- The original BASIC language was developed in the 1960s and was simpler than other languages at the time like FORTRAN.
- Bill Gates and Paul Allen wrote the first BASIC for microcomputers in the 1970s, which became the foundation for later versions like GW-BASIC and QBASIC.
- Visual Basic 6.0 introduced improvements like a faster compiler and support for database integration and internet capabilities.
- It uses an integrated development environment (IDE) and is based on creating and linking together objects to build Windows applications and
This document provides a quick start guide for using the Dojo Toolkit version 1.8. It introduces key concepts for configuring and loading Dojo, creating AMD modules, making AJAX requests and promises, using data stores, handling events, and creating custom widgets. The guide is divided into short chapters with examples and links to further resources for each topic.
WOdka is a WebObjects framework that was originally developed in Japan. It includes several frameworks like AuditTrail, JQueryMobileD2W, and ModernistD2W. WOdka has a unified dashboard for developers and administrators. It provides features like logical delete, roles and permissions, and integration with NotificationCenter. WOdka supports modern techniques like CSS3, multi-language, and REST. It is actively developed and maintained by developers in Japan and internationally.
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.
Practical JavaScript Programming - Session 4/8Wilson Su
JavaScript is one of the most popular skills in today’s job market. It allows you to create both client- and server-side applications quickly and easily. Having a solid understanding of this powerful and versatile language is essential to anyone who uses it.
“Practical JavaScript Programming” does not only focus on best practices, but also introduces the fundamental concepts. This course will take you from JavaScript basics to advanced. You’ll learn about topics like Data Types, Functions, Events, AJAX and more.
This document provides an overview of Visual Basic 6.0 and how to create a basic application. It outlines the objectives of learning Visual Basic and describes key concepts like the event-driven nature of VB applications. The document explains the structure of a VB project, including forms, controls, properties, methods and events. It also demonstrates how to set control properties, write code, declare variables, and use common functions and operators. Finally, it provides examples for creating a stopwatch timer application and a basic text editor application in VB.
First steps to create a basic app with ZF: using action methods, databases, and forms. From February presentation at ZF-NYC meetup. More to follow in March meetup.
This document outlines the modules and content covered in a JavaScript and ExtJS training course. Module 1 covers the basics of JavaScript, including elements of a JavaScript program, statements, functions, objects, arrays, and events. Module 2 provides an introduction to ExtJS and its fundamental classes. Module 3 continues ExtJS coverage, focusing on components, data stores, templates, and classes. Module 4 covers internationalization, drag and drop, common components like grids and trees, and application best practices in ExtJS. The objectives are to learn how to write JavaScript code using basic elements and create windows/dialog boxes, use built-in objects, handle events, manipulate forms, and integrate JavaScript with Java.
The document discusses client-side JavaScript and DOM (Document Object Model) manipulation. It covers the window object, DOM programming interface, DOM element types like Node and HTML Element. Methods for accessing elements like getElementById(), getElementsByName(), and querySelector() are explained. Working with element attributes, innerHTML, and traversing the DOM using childNodes and parentNode properties are also summarized. The presentation aims to explain DOM and how JavaScript can be used to get, change, add or remove HTML elements.
javascript Event Handling and introduction to event.pptLalith86
This document provides an overview of event handling in JavaScript. It discusses how event handlers allow programs to capture and respond to events, making them event-driven. It describes two methods for handling events - inline JavaScript and defining functions in the head. Common event handlers like onClick, onMouseOver, onFocus, onBlur, onLoad and onUnload are presented along with examples. The document aims to help readers understand the concept and benefits of event handlers and write simple programs using them.
LEARNING iPAD STORYBOARDS IN OBJ-‐C LESSON 1Rich Helton
This document provides an introduction to using storyboards in Objective-C on iOS. It begins with a disclaimer and then defines some key concepts about storyboards, including that they provide a visual representation of an app's user interface and allow transitions between scenes. It discusses storyboard files, segues, the dock, and scenes. It then walks through adding elements to a sample master-detail app project in Xcode like a model class, data controller, and table view controller. It includes links to Apple documentation for additional reference. The overall purpose is to explain the basics of using storyboards for app development in Objective-C on iOS.
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/
Presenting Data – An Alternative to the View ControlTeamstudio
In this webinar, Paul Della-Nebbia, an IBM Champion, will show how to implement a different alternative for displaying information from Domino views. Paul will cover how to use the Dojo Data Grid (included with XPages) to display a data grid that provides unique features like infinite scrolling, click to sort column headers, adjustable column widths, filtering, and the ability to drag and drop column headers to reorder. As the user scrolls through, the view data is retrieved as needed which improves performance and usability.
The Android user interface (UI) is composed of interactive visual elements called views and view groups. Views are used to display things on screen and can be defined in code or XML layout files. Common views include text views, buttons, and image views. Layouts organize views in different visual structures and can also be defined in code or XML. Common layouts include linear, relative, grid, and list. Interaction events like clicks are handled using listeners. Menus, dialogs, notifications, and toasts are also key UI components.
This document provides an introduction to Xcode, the integrated development environment (IDE) for building iOS apps. It describes the main parts of Xcode including the navigator panel, inspector panel, libraries and frameworks. It also explains key concepts like the model-view-controller (MVC) pattern, outlets and actions, view controllers and their lifecycles, navigation controllers, table views, and the iOS application lifecycle.
The document discusses the Oracle development tool D2K (Developer 2000). It provides information on what D2K is, the different versions, how to develop applications using it, and the key components and objects used in application development. D2K can be used to develop web-based applications and supports technologies like Java, HTML and connectivity to different databases. It uses a RAD approach to minimize coding and improve productivity.
This document provides an overview of the client-side JavaScript frameworks jQuery and Dojo. It discusses what each framework is used for, how to get started with them, and provides examples of common tasks like DOM manipulation, events, animations, and AJAX calls. Key aspects covered include Dojo's modular toolkit structure, pre-built widgets, and drag-and-drop functionality. jQuery is introduced as a simpler framework for selecting elements and handling events. The document concludes that both frameworks accomplish similar goals but that Dojo offers more granular libraries, while jQuery may be easier to get started with.
Tutorial on building an Application using Appcelerator Titanium Alloy MVC source code available here https://github.com/aaronksaunders/SimpleAlloyPresentationApp
VIDEOS - https://www.youtube.com/channel/UCMCcqbJpyL3LAv3PJeYz2bg
MORE SLIDES - complete overview of Alloy Available here
http://www.slideshare.net/aaronksaunders/modev-east2012
Visual Basic is an event-driven programming language developed by Microsoft. It was introduced in 1991 and helped popularize graphical user interface (GUI) programming. Some key points:
- The original BASIC language was developed in the 1960s and was simpler than other languages at the time like FORTRAN.
- Bill Gates and Paul Allen wrote the first BASIC for microcomputers in the 1970s, which became the foundation for later versions like GW-BASIC and QBASIC.
- Visual Basic 6.0 introduced improvements like a faster compiler and support for database integration and internet capabilities.
- It uses an integrated development environment (IDE) and is based on creating and linking together objects to build Windows applications and
This document provides a quick start guide for using the Dojo Toolkit version 1.8. It introduces key concepts for configuring and loading Dojo, creating AMD modules, making AJAX requests and promises, using data stores, handling events, and creating custom widgets. The guide is divided into short chapters with examples and links to further resources for each topic.
WOdka is a WebObjects framework that was originally developed in Japan. It includes several frameworks like AuditTrail, JQueryMobileD2W, and ModernistD2W. WOdka has a unified dashboard for developers and administrators. It provides features like logical delete, roles and permissions, and integration with NotificationCenter. WOdka supports modern techniques like CSS3, multi-language, and REST. It is actively developed and maintained by developers in Japan and internationally.
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.
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
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.
DojoX GFX Session Eugene Lazutkin SVG Open 2007Eugene Lazutkin
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/)
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/)
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.
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.
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.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
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.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...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.
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
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.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
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.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
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
2. Where did we stop?
• This presentation follows “CRUD with
Dojo: the bread and butter of IT.”
• http://lazutkin.com/blog/2009/dec/2/crud-with-dojo/
• But for those who missed it, or wants to
refresh their memory, I offer a small recap.
2
3. A short narrative of…
• …the previous episode.
• CRUD is a big hit in IT.
• If only we had a way to improve good
things and reduce bad things…
• Profit!
• If only we knew how…
3
4. Suddenly!
• The sound of heavy breathing fills airwaves.
• Scared audience can hear how cold air
rushes through myriad of small tubes
almost drowning the rhythmic clicking and
clacking of multiple valves.
• The deep voice seemingly from the guts of
the eternal void itself says:
4
6. Sorry.
• That was my bronchitis acting up.
• So, Luke, we looked at what’s available in
browsers:
• A sorry mess of form elements with
different get/set value API and events.
• Good thing we have Dojo and Dijit!
6
7. Dijit and DojoX
• Dijit and DojoX form widgets are good for
CRUD:
• Unified API to get/set values.
• Unified events.
• Better visual representations for certain
values, e.g., sliders and spinners.
• Support validation.
7
8. Forms
• dijit.form.Form
• Makes sure that all widgets are validated
before submitting a form.
• Gets/sets form widgets using a dictionary.
• More can be found in dojox.form.manager
8
10. Simple data model
• The form manager is used to annotate
complex form using simple Dojo markup.
• It views all controlled elements as a name-
based dictionary of objects.
• It can control: form widgets, form elements
(DOM nodes), arbitrary DOM nodes.
10
11. Simple value model
• The form manager can get/set a value to
any controlled element using the same API.
• It can get/set a group of values at the same
time.
11
12. Simple event model
• The form manager can observe value
changes of any controlled element using the
same API.
• When value has changed an observer can
be called.
• An observer is a method, which is called
with 4 parameters: new value, element
name, element, and an event object.
12
13. Observer
• An element can have any number of
observers.
• An observer can be attached to any
number of elements.
• Observers are used to implement all value-
change-driven functionality.
13
14. Architecture I
• The form manager is a collection of mixins
located in dojox/form/manager/.
• _Mixin.js provides all basic plumbing and
can work with form widgets and simple
DOM nodes.
• _FormMixin.js implements functionality
similar to dijit.form.Form.
14
15. Architecture II
• _NodeMixin.js adds 1st-class support to
form elements (DOM nodes).
• _ValueMixin.js adds helpers to get/set
values.
• _ClassMixin.js adds addClass()/
removeClass() helpers.
15
16. Architecture III
• _EnableMixin.js adds helpers to enable/
disable form fields.
• _DisplayMixin.js adds helpers to show/hide
DOM nodes.
16
17. Architecture IV
• Manager.js is an example widget, which
includes all mixins and searches
descendants to find controlled elements.
• When we talk about “the form manager”
we usually mean a functionality provided by
_Mixin.js, rather than actual Manager.js.
17
18. Architecture V
• Instead of using Manager.js (or a subset of
it), you can create a normal widget derived
from proper mixins, and place all form
elements in a normal template.
• This is a great way to share the same
form in several places.
• Observers would be simple methods of
your widget.
18
20. Registering elements I
<form action=”/doForm” id=”myForm”
dojoType=”dojox.form.Manager”>
<!-- form widgets are registered
automatically by _Mixin.js -->
<input type=”text” name=”name” value=””
dojoType=”dijit.form.TextBox”><br>
<!-- form nodes are registered
automatically by _NodeMixin.js -->
<input type=”text” name=”email” value=””><br>
<!-- more to follow -->
</form>
20
21. Registering elements II
<form action=”/doForm” id=”myForm”
dojoType=”dojox.form.Manager”>
<!-- more follows -->
<!-- attach points are registered
automatically by _Mixin.js -->
<div dojoAttachPoint=”more”>
<span dojoAttachPoint=”notes”
class=”dojoFormValue”></span>
</div>
</form>
21
22. Registering elements III
• Explanations:
• All 3 types of controlled elements are
registered:
• “name” – a form widget.
• “email” – a form node (_NodeMixin.js
is needed).
• “more” and “notes” – DOM nodes.
22
23. Registering elements IV
• More on DOM nodes:
• By default DOM nodes cannot have
values, but we can:
• Show/hide them.
• Add/remove CSS classes.
• To indicate that a DOM node can have
value we use “dojoFormValue” class.
23
24. Registering elements V
• “more” is a <div> node.
• It will be used to show/hide its content.
• Its value is unchanged and unused.
• “notes” is a <span> node.
• It can have a value (“dojoFormValue”).
• It is inside of “more”.
24
25. Registering elements VI
• We can register/unregister elements
dynamically.
• _Mixin.js: (un)registerWidget(),
(un)registerWidgetDescendants().
• _NodeMixin.js: (un)registerNode(),
(un)registerNodeDescendants().
• (Un)registering attach points is trivial.
25
26. Populating values I
• Logically the form manager represent its
form as a dictionary:
var form = {
name: ...,
email: ...,
notes: ...
};
// our form has 3 value fields
26
27. Populating values II
• _ValueMixin.js provides all value helpers.
• setFormValues(dict) sets values:
var fm = dijit.byId(“myForm”);
// set just one value:
fm.setFormValues({name: “Bob”});
// set other values overriding “name”
fm.setFormValues({name: “Mike”, email: “mike@i.am”,
debug: “clearly fake email!”});
27
28. Populating values III
• gatherFormValues(names) gets values:
• A dictionary is returned as the result.
• If “names” is omitted, all values are read.
• If “names” is an array, only names from
the array are read.
• If “names” is a dictionary, its keys are
read, and values are ignored.
28
29. Populating values IV
• The last form of gatherFormValues()
compliments setFormValues():
// create our dictionary with a subset of values
var dict = {name: “Bob”};
// set values (actually just one name)
fm.setFormValues(dict);
…
// update values (the same subset)
dict = fm.gatherFormValues(dict);
29
30. Populating values V
• If you want to read/write just one value use
elementValue():
// set value
fm.elementValue(“name”, “Bob”);
…
// get value
var name = fm.elementValue(“name”);
30
31. Observing elements I
<form action=”/doForm” id=”myForm”
dojoType=”dojox.form.Manager”>
<input type=”text” name=”name” value=””
dojoType=”dijit.form.TextBox”
observer=”obReady”><br>
<input type=”text” name=”email” value=””
observer=”obReady”><br>
<input type=”submit” name=”submit”
disabled=”disabled”>
<!-- more to follow -->
</form>
31
32. Observing elements II
• Explanations:
• It is a slightly modified version of the
registration example.
• It has two fields and one disabled button.
• Both fields are observed by the same
observer “obReady”.
32
33. Observing elements III
• We can attach our observer declaratively
as a regular method:
<script type=”dojo/method” event=”obReady”
args=”value,name”>
// our observer is stupid:
// it enables the button, when value is not empty
this.enable({submit: value != “”});
// we will go over enable() later
</script>
33
34. Observing elements IV
• Slightly smarter observer:
<script type=”dojo/method” event=”obReady”
args=”value,name”>
// enable the button, when at least
// one value is not empty
var dict = this.gatherFormValues([“name”, “email”]);
this.enable({submit: dict.name || dict.email});
</script>
34
35. Observing elements V
• Notes:
• Observer is invoked when a value has
changed.
• Some text-based widgets do not fire
events on every key press. Force them:
intermediateChanges=”true”
35
36. Observing elements VI
• Notes:
• Attached DOM nodes cannot have
“change” events. And they cannot have
observers.
• Elements can have several observers
listed separated by comma.
36
37. _EnableMixin.js I
• This mixin is responsible for enabling/
disabling form elements.
• gatherEnableState() is modeled after
gatherFormValues() – the same
interpolation of input values are performed.
37
38. _EnableMixin.js II
• Three ways to collect the enabled status:
// read states of all elements as true/false values
en = fm.gatherEnableState();
// read states of two elements
en = fm.gatherEnableState([“name”, “email”]);
// read states of two elements
en = fm.gatherEnableState({“name”: 1, “email”: 0});
// only keys are processed, all values are ignored
38
39. _EnableMixin.js III
• Enable/disable unconditionally:
fm.enable(); // enable all
fm.enable(true); // the same as above
fm.enable(false); // disable all
var a = [“name”, “email”];
fm.enable(a); // enable two elements
fm.enable(a, true); // the same as above
fm.enable(a, false); // disable two elements
39
40. _EnableMixin.js IV
• Enable/disable using a dictionary:
var en = fm.gatherEnableState(); // get all states
…
// enable “name”, disable “email”
fm.enable({name: true, email: false});
…
fm.enable(en); // revert to old state
40
41. _EnableMixin.js V
• disable() compliments enable() and returns
the previous state:
var en = fm.disable(); // disable all
…
fm.disable([“name”, “email”]); // disable two elements
…
// now let’s revert to the old state
fm.enable(en); // == fm.disable(en)
41
42. _DisplayMixin.js
• This mixin is responsible for showing/hiding
controlled DOM nodes. It has the same
semantics as _EnableMixin.js:
• gatherDisplayState() behaves exactly like
gatherEnableState().
• show() is like enable().
• hide is like disable().
42
43. _ClassMixin.js I
• This mixin is responsible for adding/
removing CSS classes.
• Unlike other mixins, _ClassMixin.js is not
wired for reversing states.
• While it is possible to check for presence
of a CSS class, there is no helpers to use it.
It can be added in the future.
43
44. _ClassMixin.js II
• Three ways to collect the class status:
// read presence of a CSS class from all
cs = fm.gatherClassState(cls);
// read states of two elements
cs = fm.gatherClassState(cls, [“name”, “email”]);
// read states of two elements
cs = fm.gatherClassState(cls, {“name”: 1, “email”: 0});
// only keys are processed, all values are ignored
44
45. _ClassMixin.js III
• Three ways to add class:
// add a CSS class to all elements
fm.addClass(cls);
// add a class to two elements
fm.addClass(cls, [“name”, “email”]);
// add a class to two elements
fm.addClass(cls, {“name”: 1, “email”: 0});
// only keys are processed, all values are ignored
45
46. _ClassMixin.js IV
• Three ways to remove class:
// remove a CSS class from all elements
fm.removeClass(cls);
// remove a class from two elements
fm.removeClass(cls, [“name”, “email”]);
// remove a class from two elements
fm.removeClass(cls, {“name”: 1, “email”: 0});
// only keys are processed, all values are ignored
46
48. Do you need it? I
• You have a multipart complex form.
• It is unwise to show a huge form to end
users. It is better to structure it so only a
part is shown at any given time.
• A part should have well defined logically
entry and exit points with an
intermediate validation.
48
49. Do you need it? II
• A possible way to structure a form (the
shopping basket style):
• Split in logically independent blocks.
• Organize blocks as a chain of screens
validating each screen independently.
• At the end of a chain – a summary
screen, which allows to re-start edits.
49
50. Do you need it? III
• Field values interact with each other.
• You have complex validation rules
involving several form fields.
• Variant: you can auto-suggest a value of
one field using values of other fields.
• Variant: a value of one field restrict
possible values of other fields.
50
51. Do you need it? IV
• Working with form involves I/O, which
depends on already entered values.
• When chaining screens, screen
boundaries can be used to do an
intermediate I/O.
• Variant: asynchronous server-side
validation.
51
52. Do you need it? V
• Working with form involves I/O, which
depends on already entered values.
• When chaining screens, screen
boundaries can be used to do an
intermediate I/O.
• Variant: asynchronous server-side
validation.
52
53. Do you need it? VI
• Try to simplify as much as possible:
• Use validating widgets whenever possible.
• Carefully weigh in if you need to use
_DisplayMixin.js or just proper layout
widgets.
53
54. Resetting values I
• Frequently end user realizes that the
changes were not good and want go back.
• Simple and well-known technique is to
“reset a form” reverting to previous values.
• Use gatherFormValues() to make a
snapshot before editing.
54
55. Resetting values II
• Restore the snapshot with setFormValues()
when user wants to “reset”.
• This technique works well for a part of
form – just use a proper subset when
taking a snapshot.
55
56. Suspending a form I
• Typical way to submit a form is:
• Collect all necessary data fields.
• In some cases you pre-process them.
• In some cases you produce new
synthetic fields.
• Submit it using XHR to a server.
56
57. Suspending a form II
• Analyze a return value from the server.
• If errors were encountered:
• Notify user about them.
• Allow to re-edit a form so it can be
resubmitted again.
• Redirect, or reset, if success.
57
58. Suspending a form III
• While you are busy doing I/O and waiting
for a server, it makes sense to “suspend a
form”, so no editing can be done.
• Use disable() to disable all visible fields
while waiting.
• Save a snapshot returned by disabled() –
it can be used later to recreate the
previous state.
58
59. Suspending a form IV
• Obviously it helps that you inform an end
user what is going on using a proper
message.
• Less elegant way to do the same is to use a
modal message visible until you get results
from a server.
59
60. Suspending a form V
• Soft version of “suspending a form”
happens when you want to update some
elements dynamically by loading values
from a server.
• In this case you should disable only affected
elements, show a proper message next to
them while waiting.
• After the update was done, enable them.
60
61. Suspending a form VI
• In the same category of “soft suspension” is
a server-side validation.
• Disable involved fields.
• Tell user what is going on.
• Wait for a response.
• Update messages and enable fields back.
61
62. Field interactions I
• First you need to define what is an ultimate
result of validation looks like.
• Example: city, state, and zip should match,
otherwise we cannot advance to the next
screen.
• In this example we have 3 input fields and
one output: enabled/disabled “Next”
button.
62
63. Field interactions II
• The example can be solved by one
observer attached to all three fields.
• Every time it is called, it reads 3 values,
does its magic, sets a proper enabled/
disabled flag on the button, and updates
error messages.
• The same way we can solve most validation
problems.
63
64. Field interactions III
• One form of field interaction is to show
unobtrusive error/warning messages
depending on input values.
• Usually such messages go to DOM nodes,
and effectively are pseudo-fields.
64
65. Pseudo-fields
• Pseudo-fields:
• They are not originated in a database.
• Frequently they are not transmitted at all.
• They are purely for UI convenience.
• Pseudo-fields are a powerful tool, but
cannot be generalized.
65