SlideShare a Scribd company logo
ClickableClickable divdivss
and other icebergsand other icebergs
Ben Buchanan
@200okpublic, weblog.200ok.com.au
Created by Oleksandr Panasovskyi
from the Noun Project
It's an old problemIt's an old problem
$("p").click(function() {
console.log("You clicked a paragraph!");
});
The flow on effectThe flow on effect
Tutorials drive the self-paced learning
that fills in the gaps of education.
People don't know what they don't know.
Common justificationsCommon justifications
"We're just teaching X in this tutorial"
"People know HTML anyway"
...really?
Industry skills gapsIndustry skills gaps
You could never assume people knew accessibility.
You can no longer assume a JavaScript developer knows HTML or CSS.
HTML A11y CSS JS Backend
University ✗ ✗ ✗ ? ✓
Bootcamps ✗ ✗ ✗ ✓ ✓
Tutorials ? ? ? ? ?
Internal training ✓ ✓ ✓ ✓ ✓
Everything old is new againEverything old is new again
Most popular tutorials for Angular, React
and Vue have accessibility flaws.
Custom controlsCustom controls
Adding interactions to an element (eg. a div )
that does not natively support that interaction.
Often replicating or extending functionality provided by a native control.
Understanding the impactUnderstanding the impact
Let's compare a button vs clickable div
The simplest example of this category.
Element + click eventElement + click event
DIV
Works with a mouse
Might work with touch
Button
Has focus and active states
Works with mouse
Works with keyboard
Works with touch
Tailors to different input
Can be disabled in HTML
What does it take toWhat does it take to completelycompletely
reproduce areproduce a buttonbutton with awith a divdiv??
The Amazing Clickatron™The Amazing Clickatron™
Application setupApplication setup
Clickatron ARIAClickatron ARIA
<div role="application" aria-label="Click counter">
...
</div>
Clickatron ARIAClickatron ARIA
<button aria-controls="buttoncounter">Button</button>
<div
id="buttoncounter"
role="region"
aria-live="polite"
aria-label="button clicks">
0
</div>
BoilerplateBoilerplate
const $checkbox = document.getElementById('enablecontrols');
const $button = document.getElementById('countbutton');
const $buttonCounter = document.getElementById('buttoncounter');
const $div = document.getElementById('countdiv');
const $divCounter = document.getElementById('divcounter');
let buttonCount = 0;
let divCount = 0;
Shared CSSShared CSS
:root {
--text-size: 4rem;
}
Shared JSShared JS
$checkbox.onchange = function() {
if($checkbox.checked) {
// enabled
} else {
// disabled
}
};
Create theCreate the buttonbutton
ButtonButton
<button id="countbutton" aria-controls="buttoncounter">
Button
</button>
ButtonButton
$button.addEventListener('click', function() {
$buttonCounter.textContent = ++buttonCount;
});
ButtonButton
button {
font-size: var(--text-size);
}
Toggle withToggle with disableddisabled attributeattribute
// enabled
$button.removeAttribute('disabled');
// disabled
$button.setAttribute('disabled', 'disabled');
It works!It works!
Now the DIV...Now the DIV...
DIVDIV
<div
id="countdiv"
aria-controls="divcounter"
>
DIV
</div>
Declare the DIV is really a BUTTONDeclare the DIV is really a BUTTON
<div
id="countdiv"
aria-controls="divcounter"
role="button"
>
DIV
</div>
Make the DIV clickableMake the DIV clickable
$div.addEventListener('click', function(event) {
$divCounter.textContent = ++divCount;
});
Styling the DIVStyling the DIV
.divbuttons {
/* buttons are inline-block, divs are block */
display: inline-block;
}
Styling the DIVStyling the DIV
How hard can it be to style a button, right?
Dig into calculated styleDig into calculated style
Resting stateResting state
.divbuttons {
color: #000;
background: #eee;
background: linear-gradient(to top,
#dedede 0%, #f6f6f6 100%);
border-width: 1px;
border-style: solid;
border-color: #a5a5a5 #939393 #999999 #a3a3a3;
}
Magic numbers for spacingMagic numbers for spacing
.divbuttons {
/* bump up the font size and match spacing */
font-size: var(--text-size);
padding: 0.14rem 0.4rem;
}
No active stateNo active state
Active stateActive state
.divbutton:active {
border-color: #949494 #9a9a9a #a5a5a5 #9d9d9d;
background: linear-gradient(to top,
#f6f6f6 0%, #dedede 100%) !important;
border-style: inset;
}
Active stateActive state
Disabling the DIVDisabling the DIV
Toggle withToggle with aria-disabledaria-disabled attributeattribute
// enabled
$div.setAttribute('aria-disabled', 'false');
// disabled
$div.setAttribute('aria-disabled', 'true');
Disabled styleDisabled style
.divbutton[aria-disabled="true"] {
color: #808080;
}
Disabling the DIVDisabling the DIV
Only apply active when enabledOnly apply active when enabled
.divbutton:active {}
.divbutton[aria-disabled="false"]:active {}
Add a disabled check to the JSAdd a disabled check to the JS
$div.addEventListener('click', function(event) {
if(event.target.getAttribute('aria-disabled') != "true") {
$divCounter.textContent = ++divCount;
}
});
Disabling the DIVDisabling the DIV
Ship it?Ship it? No...No...
Created by Oleksandr Panasovskyi
from the Noun Project
Wrong cursorWrong cursor
Correct cursorCorrect cursor
/* set the same cursor as a button */
cursor: default;
Ship it??Ship it?? No...No...
Created by Oleksandr Panasovskyi
from the Noun Project
Wrong selection behaviourWrong selection behaviour
Correct selection behaviourCorrect selection behaviour
/* prevent text selection, same as button */
user-select: none;
...ship it?...ship it? No...No...
Created by Oleksandr Panasovskyi
from the Noun Project
No keyboard supportNo keyboard support
Add tabindexAdd tabindex
<div
id="countdiv"
aria-controls="divcounter"
tabindex="0"
>
DIV
</div>
Refactor our counterRefactor our counter
function divCounter(event) {
if(event.target.getAttribute('aria-disabled') != "true") {
$divCounter.textContent = ++divCount;
}
}
$div.addEventListener('click', function(event) {
divCounter(event);
});
$div.addEventListener('keypress', function(event) {
divCounter(event);
});
.......ship it?.......ship it? No...No...
Created by Oleksandr Panasovskyi
from the Noun Project
Too much keyboard supportToo much keyboard support
Filter for enter and spacebarFilter for enter and spacebar
$div.addEventListener('keypress', function(event) {
if(event.keyCode==32||event.keyCode==13) {
divCounter(event);
}
});
Just enter and spacebarJust enter and spacebar
.......ship it?.......ship it? No...No...
Created by Oleksandr Panasovskyi
from the Noun Project
Focusable...but...Focusable...but...
Quick fixQuick fix
$checkbox.onchange = function() {
if($checkbox.checked) {
$button.removeAttribute('disabled');
$div.setAttribute('aria-disabled', 'false');
$div.setAttribute('tabindex', '0');
} else {
$button.setAttribute('disabled', 'disabled');
$div.setAttribute('aria-disabled', 'true');
$div.removeAttribute('tabindex');
}
};
Replicating buttonReplicating button
Button: focus disabled when disabled set.
DIV: remove tabindex when aria-disabled="true" set.
Mutation observer!Mutation observer!
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if(mutation.attributeName === 'aria-disabled') {
let $el = mutation.target;
if($el.classList.contains('divbutton')) {
if($el.getAttribute('aria-disabled') === 'true') {
$el.removeAttribute('tabindex');
} else {
$el.setAttribute('tabindex', '0')
}
}
}
});
});
observer.observe($div, { attributes: true });
GeneraliseGeneralise
observer.observe($div, { attributes: true });
let divButtons = document.querySelectorAll('.divbutton');
for(let i=0; i < divButtons.length; i++) {
observer.observe(divButtons[i], { attributes: true });
}
Properly disabled divbuttonProperly disabled divbutton
NowNow ship it?ship it? No...No...
Created by Oleksandr Panasovskyi
from the Noun Project
Focused after clickFocused after click
What we need nowWhat we need now
Keep focus ring if using keyboard, do not apply if using mouse.
Input ModeInput Mode
https://github.com/cheshrkat/input-mode
Using Input ModeUsing Input Mode
We'll set an attribute on body with the current mode:
inputMode({
'element': document.getElementsByName('body')[0],
'attr': 'data-inputmode',
'delay': 100,
'default': 'keyboard'
});
Remove focus outline during mouse modeRemove focus outline during mouse mode
body[data-inputmode="mouse"] .divbutton:focus {
outline: none;
}
No focus ring with mouseNo focus ring with mouse
Ship it?Ship it?
Ship it!Ship it!
TheThe divdiv doubled the entire codebasedoubled the entire codebase
Button div
HTML 2 attributes 6 attributes
CSS 3 LOC 25 LOC
JS 8 LOC 43 LOC
In realityIn reality
BUG-1 weird blue boxes appearing when clicking
BUG-2 still counts clicks when disabled
DES-1 active style missing
BUG-3 enable keyboard
BUG-4 user can still focus while disabled
BUG-5 disabled button can be focused
DES-2 remove ugly focus after click
BUG-6 stop counting all keystrokes
Multiply thisMultiply this
× each custom control
× each platform
× each implementation
Vanity controls are not evilVanity controls are not evil
But they are more expensive,
and trickier to make accessible.
Choose wisely.
Common issuesCommon issues
no keyboard support at all
missing states (eg. no keyboard focus)
incorrect keystrokes (eg. no cursor key support)
subtle inconsistencies (eg. cursors, text selection)
Steering clear of icebergsSteering clear of icebergs
RecruitingRecruiting
Require a11yRequire a11y
Include in QAInclude in QA
Provide trainingProvide training
It's up to us to fix the skills gap.It's up to us to fix the skills gap.
Thank you.Thank you.
@200okpublic@200okpublic
weblog.200ok.com.auweblog.200ok.com.au
Image creditsImage credits
Iceberg By Oleksandr Panasovskyi, UA
Ship by Rene Schäfer from the Noun Project
Checklist by QualityIcons from the Noun Project
Checklist by Flatart from the Noun Project
interview by DailyPM from the Noun Project
training by lastspark from the Noun Project

More Related Content

What's hot

Reactive Type-safe WebComponents
Reactive Type-safe WebComponentsReactive Type-safe WebComponents
Reactive Type-safe WebComponents
Martin Hochel
 
Fórum de Software Livre do Serpro RJ 2009
Fórum de Software Livre do Serpro RJ 2009Fórum de Software Livre do Serpro RJ 2009
Fórum de Software Livre do Serpro RJ 2009
Fabio Akita
 
Rails, Postgres, Angular, and Bootstrap: The Power Stack
Rails, Postgres, Angular, and Bootstrap: The Power StackRails, Postgres, Angular, and Bootstrap: The Power Stack
Rails, Postgres, Angular, and Bootstrap: The Power Stack
David Copeland
 
Умеете ли вы читать этикетку товара?
Умеете ли вы читать этикетку товара?Умеете ли вы читать этикетку товара?
Умеете ли вы читать этикетку товара?
Оксана Одариченко
 
Dojo Confessions
Dojo ConfessionsDojo Confessions
Dojo Confessions
Rebecca Murphey
 
Building Large jQuery Applications
Building Large jQuery ApplicationsBuilding Large jQuery Applications
Building Large jQuery Applications
Rebecca Murphey
 
JQuery UI
JQuery UIJQuery UI
JQuery UI
Gary Yeh
 
Advanced jQuery
Advanced jQueryAdvanced jQuery
Advanced jQuery
sergioafp
 
Mulberry: A Mobile App Development Toolkit
Mulberry: A Mobile App Development ToolkitMulberry: A Mobile App Development Toolkit
Mulberry: A Mobile App Development ToolkitRebecca Murphey
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
Nagaraju Sangam
 
PhoneGap: Local Storage
PhoneGap: Local StoragePhoneGap: Local Storage
PhoneGap: Local Storage
Ivano Malavolta
 
Jquery In Rails
Jquery In RailsJquery In Rails
Jquery In Rails
shen liu
 
JQuery In Rails
JQuery In RailsJQuery In Rails
JQuery In RailsLouie Zhao
 
Kick start with j query
Kick start with j queryKick start with j query
Kick start with j queryMd. Ziaul Haq
 
Technology and Science News - ABC News
Technology and Science News - ABC NewsTechnology and Science News - ABC News
Technology and Science News - ABC News
alertchair8725
 
Building Persona: federated and privacy-sensitive identity for the Web (LCA 2...
Building Persona: federated and privacy-sensitive identity for the Web (LCA 2...Building Persona: federated and privacy-sensitive identity for the Web (LCA 2...
Building Persona: federated and privacy-sensitive identity for the Web (LCA 2...
Francois Marier
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说Ting Lv
 
Matters of State
Matters of StateMatters of State
Matters of State
Kris Wallsmith
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
Kris Wallsmith
 
RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”
apostlion
 

What's hot (20)

Reactive Type-safe WebComponents
Reactive Type-safe WebComponentsReactive Type-safe WebComponents
Reactive Type-safe WebComponents
 
Fórum de Software Livre do Serpro RJ 2009
Fórum de Software Livre do Serpro RJ 2009Fórum de Software Livre do Serpro RJ 2009
Fórum de Software Livre do Serpro RJ 2009
 
Rails, Postgres, Angular, and Bootstrap: The Power Stack
Rails, Postgres, Angular, and Bootstrap: The Power StackRails, Postgres, Angular, and Bootstrap: The Power Stack
Rails, Postgres, Angular, and Bootstrap: The Power Stack
 
Умеете ли вы читать этикетку товара?
Умеете ли вы читать этикетку товара?Умеете ли вы читать этикетку товара?
Умеете ли вы читать этикетку товара?
 
Dojo Confessions
Dojo ConfessionsDojo Confessions
Dojo Confessions
 
Building Large jQuery Applications
Building Large jQuery ApplicationsBuilding Large jQuery Applications
Building Large jQuery Applications
 
JQuery UI
JQuery UIJQuery UI
JQuery UI
 
Advanced jQuery
Advanced jQueryAdvanced jQuery
Advanced jQuery
 
Mulberry: A Mobile App Development Toolkit
Mulberry: A Mobile App Development ToolkitMulberry: A Mobile App Development Toolkit
Mulberry: A Mobile App Development Toolkit
 
Introduction to jQuery
Introduction to jQueryIntroduction to jQuery
Introduction to jQuery
 
PhoneGap: Local Storage
PhoneGap: Local StoragePhoneGap: Local Storage
PhoneGap: Local Storage
 
Jquery In Rails
Jquery In RailsJquery In Rails
Jquery In Rails
 
JQuery In Rails
JQuery In RailsJQuery In Rails
JQuery In Rails
 
Kick start with j query
Kick start with j queryKick start with j query
Kick start with j query
 
Technology and Science News - ABC News
Technology and Science News - ABC NewsTechnology and Science News - ABC News
Technology and Science News - ABC News
 
Building Persona: federated and privacy-sensitive identity for the Web (LCA 2...
Building Persona: federated and privacy-sensitive identity for the Web (LCA 2...Building Persona: federated and privacy-sensitive identity for the Web (LCA 2...
Building Persona: federated and privacy-sensitive identity for the Web (LCA 2...
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说
 
Matters of State
Matters of StateMatters of State
Matters of State
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
 
RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”RubyBarCamp “Полезные gems и plugins”
RubyBarCamp “Полезные gems и plugins”
 

Similar to Clickable DIVs and other icebergs

Sperimentazioni lezione6 from_designtoapplication copy
Sperimentazioni lezione6 from_designtoapplication copySperimentazioni lezione6 from_designtoapplication copy
Sperimentazioni lezione6 from_designtoapplication copy
Salvatore Iaconesi
 
Client Web
Client WebClient Web
Client Web
Markiyan Matsekh
 
jQuery UI and Plugins
jQuery UI and PluginsjQuery UI and Plugins
jQuery UI and Plugins
Marc Grabanski
 
jQuery Foot-Gun Features
jQuery Foot-Gun FeaturesjQuery Foot-Gun Features
jQuery Foot-Gun Features
dmethvin
 
Prototype UI
Prototype UIPrototype UI
Prototype UI
Sébastien Gruhier
 
JavaScript Objects and OOP Programming with JavaScript
JavaScript Objects and OOP Programming with JavaScriptJavaScript Objects and OOP Programming with JavaScript
JavaScript Objects and OOP Programming with JavaScript
Laurence Svekis ✔
 
jQuery (BostonPHP)
jQuery (BostonPHP)jQuery (BostonPHP)
jQuery (BostonPHP)
jeresig
 
jQuery in the [Aol.] Enterprise
jQuery in the [Aol.] EnterprisejQuery in the [Aol.] Enterprise
jQuery in the [Aol.] Enterprise
Dave Artz
 
Devoxx 2014-webComponents
Devoxx 2014-webComponentsDevoxx 2014-webComponents
Devoxx 2014-webComponents
Cyril Balit
 
jQuery - 10 Time-Savers You (Maybe) Don't Know
jQuery - 10 Time-Savers You (Maybe) Don't KnowjQuery - 10 Time-Savers You (Maybe) Don't Know
jQuery - 10 Time-Savers You (Maybe) Don't Knowgirish82
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Chris Alfano
 
jQuery
jQueryjQuery
Introduction to modern front-end with Vue.js
Introduction to modern front-end with Vue.jsIntroduction to modern front-end with Vue.js
Introduction to modern front-end with Vue.js
monterail
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of usOSCON Byrum
 
Introducing coServ
Introducing coServIntroducing coServ
Introducing coServ
Ben Lue
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app development
anistar sung
 
Gail villanueva add muscle to your wordpress site
Gail villanueva   add muscle to your wordpress siteGail villanueva   add muscle to your wordpress site
Gail villanueva add muscle to your wordpress sitereferences
 
Building Potent WordPress Websites
Building Potent WordPress WebsitesBuilding Potent WordPress Websites
Building Potent WordPress Websites
Kyle Cearley
 
Some Advanced Tracking in Google Analytics in 5 mins - PhillyJS meet up
Some Advanced Tracking in Google Analytics in 5 mins - PhillyJS meet up Some Advanced Tracking in Google Analytics in 5 mins - PhillyJS meet up
Some Advanced Tracking in Google Analytics in 5 mins - PhillyJS meet up Nico Miceli
 

Similar to Clickable DIVs and other icebergs (20)

Sperimentazioni lezione6 from_designtoapplication copy
Sperimentazioni lezione6 from_designtoapplication copySperimentazioni lezione6 from_designtoapplication copy
Sperimentazioni lezione6 from_designtoapplication copy
 
Client Web
Client WebClient Web
Client Web
 
jQuery UI and Plugins
jQuery UI and PluginsjQuery UI and Plugins
jQuery UI and Plugins
 
jQuery Foot-Gun Features
jQuery Foot-Gun FeaturesjQuery Foot-Gun Features
jQuery Foot-Gun Features
 
Prototype UI
Prototype UIPrototype UI
Prototype UI
 
JavaScript Objects and OOP Programming with JavaScript
JavaScript Objects and OOP Programming with JavaScriptJavaScript Objects and OOP Programming with JavaScript
JavaScript Objects and OOP Programming with JavaScript
 
jQuery (BostonPHP)
jQuery (BostonPHP)jQuery (BostonPHP)
jQuery (BostonPHP)
 
jQuery in the [Aol.] Enterprise
jQuery in the [Aol.] EnterprisejQuery in the [Aol.] Enterprise
jQuery in the [Aol.] Enterprise
 
Devoxx 2014-webComponents
Devoxx 2014-webComponentsDevoxx 2014-webComponents
Devoxx 2014-webComponents
 
jQuery - 10 Time-Savers You (Maybe) Don't Know
jQuery - 10 Time-Savers You (Maybe) Don't KnowjQuery - 10 Time-Savers You (Maybe) Don't Know
jQuery - 10 Time-Savers You (Maybe) Don't Know
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
jQuery
jQueryjQuery
jQuery
 
Introduction to modern front-end with Vue.js
Introduction to modern front-end with Vue.jsIntroduction to modern front-end with Vue.js
Introduction to modern front-end with Vue.js
 
Big Data for each one of us
Big Data for each one of usBig Data for each one of us
Big Data for each one of us
 
Prototype UI Intro
Prototype UI IntroPrototype UI Intro
Prototype UI Intro
 
Introducing coServ
Introducing coServIntroducing coServ
Introducing coServ
 
MOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app developmentMOPCON 2014 - Best software architecture in app development
MOPCON 2014 - Best software architecture in app development
 
Gail villanueva add muscle to your wordpress site
Gail villanueva   add muscle to your wordpress siteGail villanueva   add muscle to your wordpress site
Gail villanueva add muscle to your wordpress site
 
Building Potent WordPress Websites
Building Potent WordPress WebsitesBuilding Potent WordPress Websites
Building Potent WordPress Websites
 
Some Advanced Tracking in Google Analytics in 5 mins - PhillyJS meet up
Some Advanced Tracking in Google Analytics in 5 mins - PhillyJS meet up Some Advanced Tracking in Google Analytics in 5 mins - PhillyJS meet up
Some Advanced Tracking in Google Analytics in 5 mins - PhillyJS meet up
 

More from Ben Buchanan

Things designers and developers should know (WDS18)
Things designers and developers should know (WDS18)Things designers and developers should know (WDS18)
Things designers and developers should know (WDS18)
Ben Buchanan
 
The Naming Of Things
The Naming Of ThingsThe Naming Of Things
The Naming Of Things
Ben Buchanan
 
UI Libraries: should rolling your own be the way you roll?
UI Libraries: should rolling your own be the way you roll?UI Libraries: should rolling your own be the way you roll?
UI Libraries: should rolling your own be the way you roll?
Ben Buchanan
 
ARIA: beyond accessibility
ARIA: beyond accessibilityARIA: beyond accessibility
ARIA: beyond accessibility
Ben Buchanan
 
Half Of The Next Thing
Half Of The Next ThingHalf Of The Next Thing
Half Of The Next Thing
Ben Buchanan
 
Sydjs: static site generators
Sydjs: static site generatorsSydjs: static site generators
Sydjs: static site generators
Ben Buchanan
 
ARIA (SydJS lightning talk)
ARIA (SydJS lightning talk)ARIA (SydJS lightning talk)
ARIA (SydJS lightning talk)
Ben Buchanan
 

More from Ben Buchanan (7)

Things designers and developers should know (WDS18)
Things designers and developers should know (WDS18)Things designers and developers should know (WDS18)
Things designers and developers should know (WDS18)
 
The Naming Of Things
The Naming Of ThingsThe Naming Of Things
The Naming Of Things
 
UI Libraries: should rolling your own be the way you roll?
UI Libraries: should rolling your own be the way you roll?UI Libraries: should rolling your own be the way you roll?
UI Libraries: should rolling your own be the way you roll?
 
ARIA: beyond accessibility
ARIA: beyond accessibilityARIA: beyond accessibility
ARIA: beyond accessibility
 
Half Of The Next Thing
Half Of The Next ThingHalf Of The Next Thing
Half Of The Next Thing
 
Sydjs: static site generators
Sydjs: static site generatorsSydjs: static site generators
Sydjs: static site generators
 
ARIA (SydJS lightning talk)
ARIA (SydJS lightning talk)ARIA (SydJS lightning talk)
ARIA (SydJS lightning talk)
 

Recently uploaded

Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
RinaMondal9
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
DianaGray10
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Nexer Digital
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
DianaGray10
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
danishmna97
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 

Recently uploaded (20)

Free Complete Python - A step towards Data Science
Free Complete Python - A step towards Data ScienceFree Complete Python - A step towards Data Science
Free Complete Python - A step towards Data Science
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6UiPath Test Automation using UiPath Test Suite series, part 6
UiPath Test Automation using UiPath Test Suite series, part 6
 
Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?Elizabeth Buie - Older adults: Are we really designing for our future selves?
Elizabeth Buie - Older adults: Are we really designing for our future selves?
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5UiPath Test Automation using UiPath Test Suite series, part 5
UiPath Test Automation using UiPath Test Suite series, part 5
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
How to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptxHow to Get CNIC Information System with Paksim Ga.pptx
How to Get CNIC Information System with Paksim Ga.pptx
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 

Clickable DIVs and other icebergs