Slides from my (incomplete) ReactJS presentation at Code Impact in Jacksonville, Florida, 9/13/2014. Will update these after my next presentation that will include more on the Flux architectural pattern
ReactJS - Re-rendering pages in the age of the mutable DOMMarc Cyr
A quick presentation about ReactJS and its benefits - with some discussion of the Flux pattern/architecture at the end.
Follow me:
https://twitter.com/marcacyr
https://github.com/marcacyr
An Overview of the Javascript Ecosystem in 2015. Slides from this talk given at San Diego Javascript on June 2: https://www.youtube.com/watch?v=CGkPsNyI07A
Redux is an exciting Javascript framework where you get things done by modifying nothing! More seriously, Redux is a flux-like way to manage UI state deterministically, with logical state transitions. This talk will explore how New Relic's APM product is using Redux to build interfaces at the future of software analytics. Here's to code we can understand and reason about!
---
Talk originally from New Relic FutureStack 2015!
Are you tired of Hibernate? Is GORM is too heavy for your current project? Do you like having more control over your SQL? Do you like flexible DSLs? Try JOOQ!
JOOQ (Java Object Oriented Querying) is light-weight alternative to classic data access solutions or ORMs like Hibernate, JPA, JDBC, and GORM. JOOQ's goal is to give the developer a flexible DSL for building typesafe, database agnostic SQL queries, and attempts to convince the developer of a ‘database-first’ approach to building their application. In this talk we’ll quickly present an introduction to JOOQ from a high level, discuss its features, and see several examples of how we’re using JOOQ to great effect with many Spring Boot and Ratpack apps within our platform.
ReactJS - Re-rendering pages in the age of the mutable DOMMarc Cyr
A quick presentation about ReactJS and its benefits - with some discussion of the Flux pattern/architecture at the end.
Follow me:
https://twitter.com/marcacyr
https://github.com/marcacyr
An Overview of the Javascript Ecosystem in 2015. Slides from this talk given at San Diego Javascript on June 2: https://www.youtube.com/watch?v=CGkPsNyI07A
Redux is an exciting Javascript framework where you get things done by modifying nothing! More seriously, Redux is a flux-like way to manage UI state deterministically, with logical state transitions. This talk will explore how New Relic's APM product is using Redux to build interfaces at the future of software analytics. Here's to code we can understand and reason about!
---
Talk originally from New Relic FutureStack 2015!
Are you tired of Hibernate? Is GORM is too heavy for your current project? Do you like having more control over your SQL? Do you like flexible DSLs? Try JOOQ!
JOOQ (Java Object Oriented Querying) is light-weight alternative to classic data access solutions or ORMs like Hibernate, JPA, JDBC, and GORM. JOOQ's goal is to give the developer a flexible DSL for building typesafe, database agnostic SQL queries, and attempts to convince the developer of a ‘database-first’ approach to building their application. In this talk we’ll quickly present an introduction to JOOQ from a high level, discuss its features, and see several examples of how we’re using JOOQ to great effect with many Spring Boot and Ratpack apps within our platform.
Npm, bower, Angular, jQuery, grunt, gulp, browserify, requirejs, ember, backbone, requirejs, amd .... thousands of micro frameworks, libraries and tools.
The question is how do you avoid getting lost within the jungle of modern JS frameworks, libraries and tools? How to be effective and actually deliver while every day there is a new cool framework or tool coming out and one of the developers in your team would love to try it. In production.
In this talk I will explain the right strategy for dealing with the rapid changes in JS landscape and choosing the right set of tools for doing the job.
Key takeaways:
Get to know which js tools/libraries works well together.
Which tools/libraries are not cool anymore and why?
How to deal with library/tool dependency conflicts?
How to find good quality tools and frameworks?
Increasing performance with Elixir TasksJeffrey Chan
An introduction to how we used the Elixir Task module to increase the performance of our application.
Covers what Elixir Tasks are, how to use them and cases where it's not so good.
Code for demo are here: https://github.com/jgmchan/elixir_task_demo
This year ECMA International will be ratifying the biggest update to the JavaScript language in its history. In this talk we'll look at key features already appearing in browsers as well as those coming in the near future. We'll also explore how you can begin leveraging the power of ES6 across all browsers today. If you haven't looked at JavaScript recently, you soon realize that a bigger, better world awaits.
Redux was created less than a year ago for a talk at React conference. It wasn't meant to be a Flux implementation. Nevertheless, its simple and smart principles quickly made Redux the most popular library for Flux architecture. It's straightforward, leverages functional programming principles and is easy to test.
In this talk, you will learn what Flux is, understand the core ideas behind Redux, and see why so many people are falling in love with it. React knowledge (and usage) is not required!
React Native Introduction: Making Real iOS and Android Mobile App By JavaScriptKobkrit Viriyayudhakorn
React Native is a new technology that allows building real mobile apps using only JavaScript. It is a JavaScript framework for writing, debugging, and deploying both iOS and Android mobile applications with native experience. React-Native allows developers to share about 80% of code between iOS and Android which make the development is 5x faster than traditional means. React-Native libraries are created by Facebook released in March 2015. It was proven by many world-class mobile applications, such as Facebook, Facebook Ads Manager, TaskRabbit, QQ, Discord, SoundCloud, etc.
Server side rendering for any JS frameworkAdam L Barrett
Server-Side Rendering (SSR) can offer huge benefits to initial page load performance and SEO, but most SSR techniques require you to change the way you write your front-end web apps to accommodate the SSR. We've created a technique to use Node.js to SSR your app without changing your source code and it works with any framework: React, Angular, Backbone, even legacy jQuery apps. Learn how it all works and start SSR'ing your SPAs and PWAs today!
Breaking the Server-Client Divide with Node.js and ReactDejan Glozic
Rendering Web applications server or client side has been a war for years, with server side proponents citing 'speed to glass' and SEO, and client side boasting speed of transitions after the upfront cost, and desktop-like application feel. For a while it was necessary to pick sides, that is until React. In this talk, I will show a stack we are using in IBM Cloud Data Services that uses Node.js and React to bring the best of both worlds in isomorphic apps. Server or client? Yes!
Developing, building, testing and deploying react native appsLeena N
React Native is gaining maturity as a cross-platform mobile app development solution. With a strong community around the ecosystem, mobile app development is all set to become simpler and enjoyable.
This talk is about various techniques and tools that are available for building, testing and deploying React Native apps for Android and iOS platforms.
Jeff Andersen from GoInstant
Have you ever thought that writing web applications should allow you to use your mad Javascript skillz on the server side as well? Node.js is such a platform. Bundling up the Google Chrome Javascript runtime, Node lets you easily building fast and scalable network applications perfect for the real-time web. It's also a pretty great platform for building basic data driven websites too. Jeff, a web developer at Halifax based GoInstant, will introduce us to the Node platform, exploring it from the ground up.
One of the main reasons Titanium Mobile has been so successful is that the technology has significantly lowered the barrier to entry for native mobile development. A major force behind this is JavaScript, Titanium's primary programming language. The JavaScript programming language is small enough where the basics can be learned in a matter of hours, which has enabled developers from many different backgrounds to become productive using Titanium. But there's much more to JavaScript than just control structures and a handful of primitive data types - JavaScript is a beautiful functional programming language with great features you might not be using.
Most developers working on the web today have had some exposure to JavaScript, but there's a difference between using jQuery for DOM manipulation on a web page and writing an entire application in JavaScript. This talk, intended for beginner or intermediate JavaScript developers, will focus on the essential language features you will need to write professional JavaScript applications, including but not limited to:
Object Oriented Programming in JavaScript
The Good Parts and Bad Parts of JavaScript
Useful JavaScript Patterns, Tricks, and Style Guidelines
The JavaScript runtime in Titanium Mobile
Further Reading and ways to stay up to date on JavaScript
Npm, bower, Angular, jQuery, grunt, gulp, browserify, requirejs, ember, backbone, requirejs, amd .... thousands of micro frameworks, libraries and tools.
The question is how do you avoid getting lost within the jungle of modern JS frameworks, libraries and tools? How to be effective and actually deliver while every day there is a new cool framework or tool coming out and one of the developers in your team would love to try it. In production.
In this talk I will explain the right strategy for dealing with the rapid changes in JS landscape and choosing the right set of tools for doing the job.
Key takeaways:
Get to know which js tools/libraries works well together.
Which tools/libraries are not cool anymore and why?
How to deal with library/tool dependency conflicts?
How to find good quality tools and frameworks?
Increasing performance with Elixir TasksJeffrey Chan
An introduction to how we used the Elixir Task module to increase the performance of our application.
Covers what Elixir Tasks are, how to use them and cases where it's not so good.
Code for demo are here: https://github.com/jgmchan/elixir_task_demo
This year ECMA International will be ratifying the biggest update to the JavaScript language in its history. In this talk we'll look at key features already appearing in browsers as well as those coming in the near future. We'll also explore how you can begin leveraging the power of ES6 across all browsers today. If you haven't looked at JavaScript recently, you soon realize that a bigger, better world awaits.
Redux was created less than a year ago for a talk at React conference. It wasn't meant to be a Flux implementation. Nevertheless, its simple and smart principles quickly made Redux the most popular library for Flux architecture. It's straightforward, leverages functional programming principles and is easy to test.
In this talk, you will learn what Flux is, understand the core ideas behind Redux, and see why so many people are falling in love with it. React knowledge (and usage) is not required!
React Native Introduction: Making Real iOS and Android Mobile App By JavaScriptKobkrit Viriyayudhakorn
React Native is a new technology that allows building real mobile apps using only JavaScript. It is a JavaScript framework for writing, debugging, and deploying both iOS and Android mobile applications with native experience. React-Native allows developers to share about 80% of code between iOS and Android which make the development is 5x faster than traditional means. React-Native libraries are created by Facebook released in March 2015. It was proven by many world-class mobile applications, such as Facebook, Facebook Ads Manager, TaskRabbit, QQ, Discord, SoundCloud, etc.
Server side rendering for any JS frameworkAdam L Barrett
Server-Side Rendering (SSR) can offer huge benefits to initial page load performance and SEO, but most SSR techniques require you to change the way you write your front-end web apps to accommodate the SSR. We've created a technique to use Node.js to SSR your app without changing your source code and it works with any framework: React, Angular, Backbone, even legacy jQuery apps. Learn how it all works and start SSR'ing your SPAs and PWAs today!
Breaking the Server-Client Divide with Node.js and ReactDejan Glozic
Rendering Web applications server or client side has been a war for years, with server side proponents citing 'speed to glass' and SEO, and client side boasting speed of transitions after the upfront cost, and desktop-like application feel. For a while it was necessary to pick sides, that is until React. In this talk, I will show a stack we are using in IBM Cloud Data Services that uses Node.js and React to bring the best of both worlds in isomorphic apps. Server or client? Yes!
Developing, building, testing and deploying react native appsLeena N
React Native is gaining maturity as a cross-platform mobile app development solution. With a strong community around the ecosystem, mobile app development is all set to become simpler and enjoyable.
This talk is about various techniques and tools that are available for building, testing and deploying React Native apps for Android and iOS platforms.
Jeff Andersen from GoInstant
Have you ever thought that writing web applications should allow you to use your mad Javascript skillz on the server side as well? Node.js is such a platform. Bundling up the Google Chrome Javascript runtime, Node lets you easily building fast and scalable network applications perfect for the real-time web. It's also a pretty great platform for building basic data driven websites too. Jeff, a web developer at Halifax based GoInstant, will introduce us to the Node platform, exploring it from the ground up.
One of the main reasons Titanium Mobile has been so successful is that the technology has significantly lowered the barrier to entry for native mobile development. A major force behind this is JavaScript, Titanium's primary programming language. The JavaScript programming language is small enough where the basics can be learned in a matter of hours, which has enabled developers from many different backgrounds to become productive using Titanium. But there's much more to JavaScript than just control structures and a handful of primitive data types - JavaScript is a beautiful functional programming language with great features you might not be using.
Most developers working on the web today have had some exposure to JavaScript, but there's a difference between using jQuery for DOM manipulation on a web page and writing an entire application in JavaScript. This talk, intended for beginner or intermediate JavaScript developers, will focus on the essential language features you will need to write professional JavaScript applications, including but not limited to:
Object Oriented Programming in JavaScript
The Good Parts and Bad Parts of JavaScript
Useful JavaScript Patterns, Tricks, and Style Guidelines
The JavaScript runtime in Titanium Mobile
Further Reading and ways to stay up to date on JavaScript
Web Development with Delphi and React - ITDevCon 2016Marco Breveglieri
React is the library created by Facebook to manage user interfaces inside the famous social network. In this talk we'll se how you can develop Web applications with a highly dynamic and performing UI connected to a Web API provided by a Delphi backend.
Single Page Applications: Your Browser is the OS!Jeremy Likness
Single Page Applications have gained tremendous popularity over the past few years and have prompted the creation of several frameworks to support their development. Unlike traditional web applications, most of the heavy lifting for SPA happens on the client side in your web browser. These applications rely on hundreds of lines of JavaScript coupled with asynchronous web service calls to provide a desktop-like experience that is accessible from virtually any device.
Join Principal Architect, Jeremy Likness, to learn more about SPA, including how to determine when you should choose this approach, how SPA compares and contrasts with traditional server-based approaches including ASP.NET WebForms and MVC, and what frameworks and tools (such as jQuery, AngularJS, and Aurelia) make building SPA easier. Discover how single page applications powered by HTML5 and JavaScript transform your browser into a web-based operating system.
Slide deck from React Native talk for Central Penn DotNet user group on 01/23/2018.
https://www.meetup.com/Central-Penn-Dot-Net-User-Group/events/245677212/
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
Climate Impact of Software Testing at Nordic Testing DaysKari Kakkonen
My slides at Nordic Testing Days 6.6.2024
Climate impact / sustainability of software testing discussed on the talk. ICT and testing must carry their part of global responsibility to help with the climat warming. We can minimize the carbon footprint but we can also have a carbon handprint, a positive impact on the climate. Quality characteristics can be added with sustainability, and then measured continuously. Test environments can be used less, and in smaller scale and on demand. Test techniques can be used in optimizing or minimizing number of tests. Test automation can be used to speed up testing.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
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.
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.
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.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
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
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
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
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
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
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
2. This Guy
• Software Engineer at feature[23]
• I can haz degrees in muzak and puterz
• I beer, fish, and party on guitars
• I currently dig FRP, IOT, and JS (the good parts…)
3. So, What Is React?
• A JavaScript library for building User Interfaces*
• It was created by the engineering team at facebook
• https://code.facebook.com/projects/
• A (Smart) View Engine of sorts
• It is not a client-side, MVC/MVVM/MW*, framework
4. What Does React Do?
• React renders your UI
• React responds to user interactions
• React reduces complexity
• React tackles performance issues for you, behind the scenes
5. This Sounds Familiar
• It is… and isn’t
• http://www.todomvc.com
• Two-way data binding is great… and isn’t
• Cascading effects and interdependent data
• State over time
• Templates are great… until they aren’t
• Constrained Template Engines/Languages
• Cohesion over Coupling
• Templates don’t respect state
• Frameworks are great… and aren’t
• Just a View Engine, and just JavaScript
• Truly reusable and plays nicely with existing frameworks and libraries
• No esoteric concepts
6. React Concepts Notions
• Components
• Manage their own state
• Handle interactions through explicit and declarative events
• Separate responsibilities
• Higher maintainability
• Great for debugging
• Great for testing
• Props
• Data that is passed to a component
• Immutable
• State
• Immutable… sort of
• this.setState()
• “Re-render” entire app on state change
• This sounds horribly inefficient…
No esoteric concepts?!?!
…these aren’t new concepts
7. Virtual DOM
(this is)
• A virtual, in memory, representation of the real DOM
• Changes in the real DOM trigger changes to the state of your React
Component
• When state changes, React creates a new representation of the virtual
DOM based on what has changed.
• React diffs between the original representation and the new
representation of the Virtual DOM.
• React determines the minimal set of operations necessary to update the
real DOM and batch processes them as a patch to the real DOM.
• In effect, you have “re-rendered” your application, but you haven’t lost any
state in the real DOM (scroll position, timers, etc.)
8. Why a Virtual DOM?
• Because the real DOM is slow and clunky
• …and you don’t know all the implications of changing DOM or Style
• http://www.csstriggers.com
• Because “re-rendering” your entire application every time state changes would be unbelievably slow (a la
1990s style page refreshes) in the modern web.
• But those 90s people had some things right
• Wrapping state around a stateless protocol is...
• Diffing Immutable Data Structures is fast
• http://en.wikipedia.org/wiki/Hash_array_mapped_trie
• You only update the path/parts that changed
• Browser Compatibility and Normalization
• Fix all the things! (that the DOM is horrible at)
9. Heuristics
• Accepted rules to allow for O(N) diffing computation
• Versus O(N3)
• Keys
• Seriously, a lack of keys will cause crazy behavior
• Without keys, React won’t be able to know about dynamic DOM updates
• Single Node
• Components must return a single node
• Can return any number of nodes within that
• Use parentheses (just do it)
• Component Levels
• Components should never move vertically
10. JSX
• Completely Optional
• XML-usg syntactic sugar
• Easier to reason about for engineers
• Easier for designers to contribute
• Give it a try
13. Gotchas
• Including JSX Transformer
• <script type=“text/jsx”></script>
• <div style={wtf}></div>
• <div className={wtf}></div>
• ClassSet makes up for this annoyance
• Components must return a single element
• Auto-binding of this and closures
• KEYS
• Seriously, these are crucial
• Must be unique
17. Resources
• YouTubez
• David Nolen: Immutability, Interactivity, and JavaScript
• Tom Occhino and Jordan Walke: Introduction to ReactJS
• Pete Hunt: Rethinking Best Practices
• Steven Luscher: Developing User Interfaces with ReactJS
• Just look up ‘ReactJS’ on YouTube, there are some other great videos
• Links
• ReactJS
• ReactJS.NET
• Flux
• Virtual DOM
JavaScript Library
Created By Facebook
=>It was open sourced in mid-2013
=>Currently at version 0.11.1
Smart View Engine
=>Smart View Engine: Think “controller-views”, I know, that sounds awfully coupled, doesn’t it?
What it is NOT
=>Comparing React to Angular or Ember is like comparing apples and fruit markets (thanks reddit)
*When I say large applications, I mean really large applications with rich user experiences, not just LOB applications that need some small JS widgets here and there.
? Who is currently maintaining a seriously large application with a metric shit ton of JavaScript? You may want to consider React.
React Renders your UI
React presents what your View should look like at a given point in time
React Responds to User Interactions
=>And responds to user interactions. Think of it as a more declarative jQuery.
=>Prevents unwanted state
Reduces Complexity
=>React encourages you to write Components with SRP in mind, versus writing a bunch of spaghetti JavaScript and trying to mitigate changes in data over time.
Performance
=>React has a ton of performance benefits that you get for free, I’ll discuss these in depth a bit later
There are a lot of client-side JS frameworks… a lot
Two Way Data Binding
Two way data-binding isn’t always a bad thing, it has its place, like everything else
But JavaScript is based on the von Neumann model of computing, meaning data only flows in one direction
You assign values right to left.
Building a two-way data binding abstraction fights this aspect of the language
It also makes it more difficult to reason about the program, since data flies in and out modules in multiple directions
And performance is hard to think about with regard to cascading updates
When it works, 2-way data binding is great, when it doesn’t, it’s difficult to deal with.
React does have two way data binding (of sorts) if you want it
Templating
You’re handcuffed by whatever your Template Engine of choice provides to you
With React, you have the full arsenal of JS at your disposal to decide how your data should be rendered
Templates aren’t really separating concerns, but technologies
You’re already on the client, you’re in the View
You write JavaScript, or use JS frameworks to manipulate HTML, so you’re writing JS-based display logic, hence, it’s a View/Display concern
React favors and accepts this level of coupling because it’s inherently cohesive for your JS and Display Logic to live together
After all, JS was written to work with the browser. You know, that thing that presents your View…
Frameworks
Because React is a library, and it is written to be truly agnostic, you can use it with any existing framework (or your own implementation)
All it cares about is rendering data
Many frameworks contain specialized concepts that engineers have to learn and deal with in order to make their underlying implementation work.
There are a lot of leaky abstractions in these frameworks
React has one leaky abstraction
***These aren’t esoteric, as they are nothing new in terms of programming concepts***
Components
Think of the events as a more declarative jQuery
If you find yourself heaping too much responsibility into a Component, create a new one
Should model the hierarchy of your data
Props
Simply put, props are the data you want to render, typically passed in from the server or an external service
Should be treated as an immutable data structure
State
State should also be thought of as immutable, but state will change through calls to this.setState()
You pass in what the new state of the object should be, and your component will re-render itself with the new state/data
Sounds horribly inefficient, right?
Virtual DOM
Virtual DOM
This is a new concept, but you don’t really have to worry about it, learn about it, or know anything about it outside of a basic understanding of what it’s doing for you.
And honestly, if you don’t know what the DOM is, and can’t discern what a virtual DOM is, maybe you shouldn’t be doing this…
You need to include the JSXTransformer.js along with the react.js file in order to develop with JSX
text/jsx for JSX based script
Should compile to JS for deployment, see, React Compiler
Inline styles are bad anyway, and you shouldn’t use them, but it’s not a horrible hindrance to use objects for style
className is a minor inconvenience, but no big deal, classSet is an awesome add on
Components should only ever return a single element (have to wrap everything)
Keys are super important. They’re the way that dynamic elements are differentiated between renders, so when you’re diffing between renders and you have two collections, how would your collection determine where to place the new item(s)?