- The document is a presentation on Ajax given by Alex Russell that covers what Ajax is, how it works, when it should and should not be used, tools for Ajax development, debugging techniques, and the future of Ajax and the open web.
- It includes examples of building an auto-save feature with Ajax using plain JavaScript, Prototype, and Dojo and discusses language features of JavaScript.
- The presentation aims to provide enough knowledge and code examples to get started with Ajax development while addressing open web standards and browser compatibility.
The next web will be about flow, this flow will be user generated pipelines through applications and services. Unlike before these Pipelines will be definable, non-proprietary and shareable by anyone
I've seen projects with shiny, new code render into unmaintainable big balls of mud within 2-3 years. Multiple times. But regardless of whether it's the code base as a whole that's rotten, or whether it's just the UI and User Experience that needs a major overhaul: the question on rewrite vs refactoring will come up sooner or later. Based on years of experience, and a plethora of bad decisions cumulating into epic failures, I'll share my experience on how to have a code base that stays maintainable - even after years. After this talk, you'll have more insight into whether you should refactor or rewrite, and how to do it right from now on.
The following slides summarize and curate most of the knowledge and patterns gathered to date on Node error handling.
Without clear understanding and strategy, Node error handling might be the Achilles heel of your app – its unique single-threaded execution model and loose types raise challenges that don’t exist in any other frameworks. Node by itself doesn’t provide patterns for critical paths like where to put error handling code, even worst it suggest patterns that were rejected by the community like passing errors in callbacks.
It covers topics like promises, generators, callbacks, unhandled exceptions, APM products, testing errors, operational errors vs development errors and much more
JavaScript is great, but let's face it, being stuck with just JavaScript in the browser is no fun.
Why not write and run Ruby in the browser, on the client, and on the server as part of your next web application?
The next web will be about flow, this flow will be user generated pipelines through applications and services. Unlike before these Pipelines will be definable, non-proprietary and shareable by anyone
I've seen projects with shiny, new code render into unmaintainable big balls of mud within 2-3 years. Multiple times. But regardless of whether it's the code base as a whole that's rotten, or whether it's just the UI and User Experience that needs a major overhaul: the question on rewrite vs refactoring will come up sooner or later. Based on years of experience, and a plethora of bad decisions cumulating into epic failures, I'll share my experience on how to have a code base that stays maintainable - even after years. After this talk, you'll have more insight into whether you should refactor or rewrite, and how to do it right from now on.
The following slides summarize and curate most of the knowledge and patterns gathered to date on Node error handling.
Without clear understanding and strategy, Node error handling might be the Achilles heel of your app – its unique single-threaded execution model and loose types raise challenges that don’t exist in any other frameworks. Node by itself doesn’t provide patterns for critical paths like where to put error handling code, even worst it suggest patterns that were rejected by the community like passing errors in callbacks.
It covers topics like promises, generators, callbacks, unhandled exceptions, APM products, testing errors, operational errors vs development errors and much more
JavaScript is great, but let's face it, being stuck with just JavaScript in the browser is no fun.
Why not write and run Ruby in the browser, on the client, and on the server as part of your next web application?
Slides from a three hour tutorial presented at XTech 2008 on the 6th of May. See also <a href="http://simonwillison.net/static/2008/xtech/">the supporting notes</a>.
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLUlf Wendel
HTTP, JSON, JavaScript, Map&Reduce built in to MySQL - make it happen, today. See how a MySQL Server plugin be developed to built all this into MySQL. A new direct wire between MySQL and client-side JavaScript is created. MySQL speaks HTTP, replies JSON and offers server-side JavaScript. Server-side JavaScript gets access to MySQL data and does Map&Reduce of JSON documents stored in MySQL. Fast? 2-4x faster than proxing client-side JavaScript request through PHP/Apache. Reasonable results...
[Slides from my 'Edge of the Web' workshop]
The web platform has evolved significantly over the last several years, giving developers more power than ever to create rich, interactive applications delivered via browsers. New capabilities in HTML, CSS and JavaScript paired with constantly updating browsers make it possible to do things on the web that used to be the exclusive domain of plugins and native apps. In this workshop, you’ll be introduced to some of the most powerful and useful techniques available to the modern web developer that will change the way you think about web app development.
The future of web app development is exciting, and these are the technologies that will underpin and drive that change. Don’t get left behind with IE8-era knowledge. Get ahead of the curve and master the edge of the web.
Slides for my tutorial from Velocity 2014 on some of the more advanced features in WebPagetest.
Video is available on Youtube:
Part 1: http://youtu.be/6UeRMMI_IzI
Part 2: http://youtu.be/euVYHee1f1M
The async/await syntax has arrived in JavaScript, Kotlin and Rust as a pattern for asynchronous programming - but the Project Loom of the JDK team chooses another way. This talk deals with the approaches of asynchronous programming in different programming languages and shows what Java and Project Loom want to do differently with their concept.
https://lukstei.com/2020-07-25-a-first-look-into-the-project-loom-in-java/
This is an introductory talk we delivered at Universidad Europea de Madrid for the International Week of Technological Innovation. We introduce concepts such as accessibility and performance in modern web development, current browser market state and evolution, and some approaches to introduce CSS3.
Open Ldap Integration and Configuration with Lifray 6.2.LDAP (Lightweight Directory Access Protocol) is a software protocol for enabling anyone to locate organizations, individuals, and other resources such as files and devices in a network, whether on the public Internet or on a corporate intranet
Json stands for Java script Object Notation and Gson is like json which is developed bye Google. Jackson is also one type of Json which works similar to json. in this slide i am showing The performance comparison between Json, Gson and Jackson.
Slides from a three hour tutorial presented at XTech 2008 on the 6th of May. See also <a href="http://simonwillison.net/static/2008/xtech/">the supporting notes</a>.
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLUlf Wendel
HTTP, JSON, JavaScript, Map&Reduce built in to MySQL - make it happen, today. See how a MySQL Server plugin be developed to built all this into MySQL. A new direct wire between MySQL and client-side JavaScript is created. MySQL speaks HTTP, replies JSON and offers server-side JavaScript. Server-side JavaScript gets access to MySQL data and does Map&Reduce of JSON documents stored in MySQL. Fast? 2-4x faster than proxing client-side JavaScript request through PHP/Apache. Reasonable results...
[Slides from my 'Edge of the Web' workshop]
The web platform has evolved significantly over the last several years, giving developers more power than ever to create rich, interactive applications delivered via browsers. New capabilities in HTML, CSS and JavaScript paired with constantly updating browsers make it possible to do things on the web that used to be the exclusive domain of plugins and native apps. In this workshop, you’ll be introduced to some of the most powerful and useful techniques available to the modern web developer that will change the way you think about web app development.
The future of web app development is exciting, and these are the technologies that will underpin and drive that change. Don’t get left behind with IE8-era knowledge. Get ahead of the curve and master the edge of the web.
Slides for my tutorial from Velocity 2014 on some of the more advanced features in WebPagetest.
Video is available on Youtube:
Part 1: http://youtu.be/6UeRMMI_IzI
Part 2: http://youtu.be/euVYHee1f1M
The async/await syntax has arrived in JavaScript, Kotlin and Rust as a pattern for asynchronous programming - but the Project Loom of the JDK team chooses another way. This talk deals with the approaches of asynchronous programming in different programming languages and shows what Java and Project Loom want to do differently with their concept.
https://lukstei.com/2020-07-25-a-first-look-into-the-project-loom-in-java/
This is an introductory talk we delivered at Universidad Europea de Madrid for the International Week of Technological Innovation. We introduce concepts such as accessibility and performance in modern web development, current browser market state and evolution, and some approaches to introduce CSS3.
Open Ldap Integration and Configuration with Lifray 6.2.LDAP (Lightweight Directory Access Protocol) is a software protocol for enabling anyone to locate organizations, individuals, and other resources such as files and devices in a network, whether on the public Internet or on a corporate intranet
Json stands for Java script Object Notation and Gson is like json which is developed bye Google. Jackson is also one type of Json which works similar to json. in this slide i am showing The performance comparison between Json, Gson and Jackson.
This is the Google Tech Talk that I gave August 17th, 2007 on building a JavaScript library. I derived much of the talk from my experiences in building the jQuery and FUEL JavaScript libraries.
A first-steps intro to Java Web Services and their role with iPhone applications. We code an iPhone app and connect it to Java Web Services and discuss how they are already playing together in today's commercial iPhone app market.
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.
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.
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.
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.
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…
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.
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.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
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.
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
4. What We’ll Cover
• What Ajax is
• What Ajax is not
• The fundamentals of Ajax
• How to build better experiences with Ajax
• Tools to make Ajax development easier
5. How We’ll Get There
• Demos
• Deconstruction
• Code examples
• Introduction to debugging tools
6. What You’ll Walk Away With
• Enough code to be dangerous
• Enough knowledge not to be
• Tools of the trade
• Places to look when you get stuck
• How it all fits together
• The lowdown on “what’s next”
7. What Is Ajax?
• New name, old tech
• Technique for increasing UI responsiveness
• Incremental, in-place updates to a page
• Updates a result of user actions
• Preserves you reach
• No plugins, standards based
• Browser as protocol participant
8. Why Ajax Now?
• The browsers stabalized
• The DOM is more-or-less implemented
• HTML and CSS are tapped out
• At the limit of resonsiveness and usability
• REST and SOAP are handy endpoints
• What if the browser could be just another
client?
9. When Is Ajax The
Answer?
• When targeting majority browsers
exclusively or can write two versions
• When you interface “feels” heavy
• When the competition is using Ajax
• They will be soon!
• When it can make users’ lives better but
not worse
10. When Is Ajax Bad?
• When it breaks the freaking back button
• When it hinders accessibility
• When it disorients users
• “jumping blocks”
• When it fails silently
• When it ignores indempotency
13. Grab the Chicken!
• Surprisingly intuitive experiences
• Demo Uses:
• Simple structural HTML elements
• Basic event handling
• Background REST requests
• Get out of the user’s way!
14. Dissecting Auto Save
• XMLHTTP introduced
• browser incompatibilities papered over
• Return XML traversed to get data
• Basic DOM manipulation
• ~150 lines of procedural JavaScript
15. var progIds = [
'Msxml2.XMLHTTP',
'Microsoft.XMLHTTP',
'Msxml2.XMLHTTP.4.0'];
var http = null;
var last_e = null;
try{ http = new XMLHttpRequest(); }catch(e){}
// IE branch
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
if(!http){
for(var i=0; i<progIds.length; ++i){
var objectType = progIds[i];
try{
http = new ActiveXObject(objectType);
}catch(e){
last_e = e;
}
}
}
@end @*/
16. Dissection contd.
• Basic DOM manipulation
• Getting “handles” to nodes
• getElementsByTagName()
• getElementById()
• Creating elements - example
• Deleting elements - example
• Moving elements around - example
• Changing the look of things - example
17. Scheduled Saves
• HTTP POST
• We’re modifying data
• setInterval() for occasional execution
• Events hard-wired to IDs
• This code is brittle and hard to reuse
18. More on XMLHTTP
• Sync or Async communication
• Simple callback scheme for status
• Can return either text or XML doc
• Uses one of 2 available sockets
• not x-domain
• Return order NOT guaranteed
• Interface NOT a standard (yet)
19. Ajax “quirks”
• Synchronous requests halt browser
• Picky about response Content-Type
• Some verbs problematic (HEAD, PUT)
• File upload not available cross-browser
• handled w/ iframes and form hacks
• Bugs:
• Caching (IE and FF 1.5 do, FF 1.0 doesn’t)
• IE: which MSXML did I really get?
20. What About Iframes?
• Used extensively by earlier toolkits
• Highly portable (works on 4.0 browsers)
• IE “Phantom Click”
• onload handler not reliable
• Only way to upload files reliably
• Async only
21. Design Decision:
What To Send?
• XML
• plain/text
• HTML
• JavaScript (JSON)
22. “It Depends”
• HTML
• Easy to insert into document (fast!)
• Can return as just a string, easy to debug
• Portability problems
• Implies replacement, not update
23. contd.
• XML
• Usually supported, MUST use “text/xml”
• Doesn’t tie your server to your
rendering
• Need to transform on client
• XSLT can be very fast
• Very large on the wire
24. contd.
• Plain text
• JavaScript/JSON
• Smallest for large data sets
• Fastest parsing
• Native language of your scripting
environment
• Constructing UI can be slower
• App more likely to “speak” XML
26. Experience
Improvements
• Only auto-save after things change
• Avoid “twitchyness”
• Smoother notification
• Handle unavailable network
• Save to cookie as backup
27. Code Improvements
• Less browser quirk juggling
• Less brittle event/node linkage
• Animations for transitions
• A reusable auto-save component
• Easier to instantiate
28. Toolkits To The Resuce!
• Dojo:
• Save data with dojo.io.bind()
• Generic events with dojo.event.connect()
• Animation and component support
• Prototype:
• Save data with Ajax.Request
• Portable events with Event.observe()
29. Other Quality Toolkits
• Open Source
• MochiKit
• YUI
• Scriptaculous (builds on Prototype)
• Closed Source
• TurboWidgets (based on Dojo)
• Bindows
• Backbase
40. It Works Now
• Not a “toy” language
• Dynamic, functional (has closures)
• Classes and inheritance
• Ubiquitous: browser, stand alone, flash, etc.
• Debuggers available
• Can be modularized/packaged
• Libraries provide packaging, AOP, etc.
41. The Chameleon Of
Languages
• Never what you expect
• Whatever you make of it
• Imperative to imperative programmers
• OO (with quirks) to OO programmers
• Functional to Functional hackers
42. Language Features
• •
Lexical scope OOP via constructor
closures and prototype
• inheritance
Functions are objects
•
• Some interpreters
Functions are closures
support continuations
• Anonymous function
• C-style syntax
support
• Delegation via the
prototype chain
43. OOP in JS
• Prototype-based inheritance
• Not class-based!
• Prototype chain is method and property
delegation
44. The Prototype Chain
function FooClass(ctorArg1, ctorArg2){
}
FooClass.prototype.foo = “foo”;
FooClass.prototype.bar = “bar”;
var baz = new FooClass();
baz.foo = “my own foo”;
var thud = new FooClass();
thud.foo == “foo”;
45. Mixins For Multiple
Inheritance
// “interfaces that actually do something”
namespace.mixinClass = function(){
this.foo = “foo”;
this.bar = function(){
alert(this.foo);
}
};
function thingerClass(){
namespace.mixinClass.call(this);
}
(new thingerClass()).foo == “foo”;
48. The Web Won Because
It Cost Less To Build
• Markup is the fastest way to build UIs
• Text, end-to-end
• Remixable
• Open Specs allow multiple renderers
• Royalty-free licensing of IP a key tennant
49. Who Wouldn’t Love To
Control The Web?
• Now that it’s valuable, there’s money to be
had
• Closed, markup-based systems with single
renderers threaten our ability to build
freely
50. Ajax Is Helping To Keep
The Web Open
• Still text all the way
• Open protocols: HTTP
• Standards-based tools, multiple clients
• Still not an experience that’s competitive
with closed solutions
53. Make Your Voice Heard
• Support minority browsers in your apps
• Use better browsers
• Vote for bugs in Open Source renderers
• File bugs for missing features in closed
clients
• Blog
• Comment on vendor blogs
55. What’s Next
• Low-latency data transfer: “Comet”
• Continued JavaScript ubiquity
• Shipping with next JDK
• E4X
• Blurred desktop/web lines
• Cross-domain API usage from the browser
56. Where To Look For
Answers
• •
JavaScript, The Definitive Mozilla DOM Reference
Guide
• Ajaxpatterns.org
• W3C DOM Spec
• Toolkit-specific lists and
• Ecma 262-3 Spec forums
• •
Quirksmode.org javascript.faqts.com
• •
MSDN DHTML Browser source code
References
• Toolkit source code