Let's Get Physical

J
Let’s	Get	Physical
An	introduction	to	the	world	of	the	physical	web
@joel__lord
#midwestjs
About	Me
@joel__lord
#midwestjs
Our	Agenda	for	today…
• What	is	Bluetooth
• The	Physical	Web
• Web	Bluetooth	API
• Demos,	code	and	lots	
of	fun
• Q&A
@joel__lord
#midwestjs
What	is	Bluetooth?
@joel__lord
#midwestjs
@joel__lord
#midwestjs
@joel__lord
#midwestjs
Why	use	it?
• Available	on	modern	
devices
• Stable
• Good	Range
• Connectivity
• Auto	Pair
@joel__lord
#midwestjs
Multiple	Flavors
• Bluetooth	Basic	Rate/Enhanced	Data	Rate	
(BR/EDR)
• Bluetooth	Low	Energy	(LE)
@joel__lord
#midwestjs
The	Generic	Attributes	(GATT) define	a	hierarchical	data	structure	that	
is	exposed	to	connected	Bluetooth	LE	devices.
@joel__lord
#midwestjs
The	Generic	Attributes	
(GATT)	define	a	
hierarchical	data	
structure	that	is	
exposed	to	connected	
Bluetooth	LE	devices.
@joel__lord
#midwestjs
The	Generic	Attributes	
(GATT)	define	a	
hierarchical	data	
structure	that	is	
exposed	to	connected	
Bluetooth	LE	devices.
@joel__lord
#midwestjs
The	Generic	Attributes	
(GATT)	define	a	
hierarchical	data	
structure	that	is	
exposed	to	connected	
Bluetooth	LE	devices.
@joel__lord
#midwestjs
For	more	on	Bluetooth	specs:	https://www.bluetooth.com/specifications/gatt
@joel__lord
#midwestjs
The	Physical	
Web
The	Physical	Web is	an	
open	approach	to	
enable	quick	and	
seamless	interactions	
with	physical	objects	
and	locations.
@joel__lord
#midwestjs
The	Physical	
Web
• Everything	is	a	tap	
away
• See	what’s	useful	
around	you
• Any	object	or	place	
can	broadcast	content
@joel__lord
#midwestjs
Introducing	
Eddystone	
Beacons
@joel__lord
#midwestjs
Out	of	the	
box	solutions
@joel__lord
#midwestjs
@joel__lord
#midwestjs
Your	own	
laptop	!
@joel__lord
#midwestjs
And	a	touch	
of	Javascript
@joel__lord
#midwestjs
What	you	need
• A	URL	that	you	want	to	broadcast
• Has	to	resolve	to	HTTPS	and	public
• Has	to	be	less	than	18	characters
• A	phone	or	device	that	can	receive	nearby	notifications
@joel__lord
#midwestjs
Configure	your	device
• First,	check	that	you	have	an	
active	data	connection	as	well	as	
Bluetooth	and	Location	turned	
on.	The	notification	shade	
provides	an	easy	way	to	check	
that	these	requirements	are	
met.
@joel__lord
#midwestjs
Configure	your	device
• Swipe	down	on	the	notification	
shade	when	you	first	encounter	
a	beacon.	You	will	receive	a	
notification	alerting	you	about	
nearby	web	pages.
@joel__lord
#midwestjs
Configure	your	device
• Tap	on	the	notification	to	opt	
into	future	Nearby	notifications.	
Opting	in	will	take	you	to	a	list	of	
nearby	URLs
@joel__lord
#midwestjs
Configure	your	device
• When	you	are	near	a	beacon	in	
the	future,	you	will	see	a	
notification	informing	you	of	
nearby	URLs.
@joel__lord
#midwestjs
But	it	doesn’t	work	on	my	phone!
• Try	to	download	the	application	
”Physical	Web”	from	the	Play	
Store
@joel__lord
#midwestjs
Wait!		I	have	a	fancy	iPhone!
• Try	it	and	let	me	know:	iOS
@joel__lord
#midwestjs
Broadcast	that	URL
• You	will	need
• Compatible	Bluetooth	4.0	USB	adapter	or	built-in	BT	(Macbook Pro)
• NodeJs
• See	full	list	of	requirements
@joel__lord
#midwestjs
Broadcast	that	URL
• [SYS:~	jlord$	npm install	eddystone-beacon
@joel__lord
#midwestjs
Broadcast	that	URL
var beacon = require("eddystone-beacon");
var options = {
name: "MyBeacon"
};
var url = "https://goo.gl/SuTBBh";
beacon.advertiseUrl(url, options);
@joel__lord
#midwestjs
Broadcast	that	URL
var beacon = require("eddystone-beacon");
var options = {
name: "MyBeacon"
};
var url = "https://goo.gl/SuTBBh";
beacon.advertiseUrl(url, options);
@joel__lord
#midwestjs
Broadcast	that	URL
var beacon = require("eddystone-beacon");
var options = {
name: "MyBeacon"
};
var url = "https://goo.gl/SuTBBh";
beacon.advertiseUrl(url, options);
@joel__lord
#midwestjs
Broadcast	that	URL
var beacon = require("eddystone-beacon");
var options = {
name: "MyBeacon"
};
var url = "https://goo.gl/SuTBBh";
beacon.advertiseUrl(url, options);
@joel__lord
#midwestjs
Broadcast	that	URL
var beacon = require("eddystone-beacon");
var options = {
name: "MyBeacon"
};
var url = "https://goo.gl/SuTBBh";
beacon.advertiseUrl(url, options);
@joel__lord
#midwestjs
Tada!
You	should	see	the	notification	on	your	
phone
It’s	really	just	that	simple!
@joel__lord
#midwestjs
But	what	about	controlling	BT	devices?
@joel__lord
#midwestjs
What	about	controlling	devices?
• Available	in	Chrome	56	and	Chrome	for	Android	M
• Lets	you:
• Request	and	connect	to	nearby	Bluetooth	devices
• Read	and	write	Bluetooth	Characteristics
• Receive	GATT	Notifications
• Know	about	disconnects
@joel__lord
#midwestjs
What	about	controlling	devices?
• Still	experimental
• Full	specs	here
• Only	Google	implementing	it	so	far
• Security	is	a	big	concern
@joel__lord
#midwestjs
What	about	controlling	devices
• You	will	need	a	compatible	
browser
• Understanding	of	Promises
• A	User	gesture	event
document.querySelector("button")
.addEventListener("click", _ => {
//User event
});
@joel__lord
#midwestjs
Web	Bluetooth	API	Demo
• A	Heart	Rate	Monitor
@joel__lord
#midwestjs
Web	Bluetooth	API
• First,	we	need	to	connect	to	a	device.	
• Requires	a	mandatory	service	filter	
navigator.bluetooth.requestDevice({ filters: [
{ services: ['heart_rate'] }
]})
.then(device => { /* ... */ })
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• First,	we	need	to	connect	to	a	device.	
• Requires	a	mandatory	service	filter	
navigator.bluetooth.requestDevice({ filters: [
{ services: ['heart_rate'] }
]})
.then(device => { /* ... */ })
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• You	can	see	all	the	devices	but	you	will	get	an	error	later	if	you	don’t	
add	a	service	filter
navigator.bluetooth.requestDevice({acceptAllDevices: true})
.then(device => { /* ... */ })
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• First,	we	need	to	connect	to	a	device.	
• Requires	a	mandatory	service	filter	
navigator.bluetooth.requestDevice({ filters: [
{ services: ['heart_rate'] }
]})
.then(device => { /* ... */ })
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• First,	we	need	to	connect	to	a	device.	
• Requires	a	mandatory	service	filter	
navigator.bluetooth.requestDevice({ filters: [
{ services: ['heart_rate'] }
]})
.then(device => { /* ... */ })
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• You	can	*then*	connect	to	the	device	and	get	information	about	this	
device
navigator.bluetooth.requestDevice(options)
.then(device => {
// Human-readable name of the device.
console.log(device.name);
})
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• Once	you	have	a	device,	you	can	access	the	GATT	server
navigator.bluetooth.requestDevice(options)
.then(device => {
// Attempts to connect to remote GATT Server.
return device.gatt.connect();
})
.then(server => { /* ... */ })
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• Once	you	have	a	device,	you	can	access	the	GATT	server
navigator.bluetooth.requestDevice(options)
.then(device => {
// Attempts to connect to remote GATT Server.
return device.gatt.connect();
})
.then(server => { /* ... */ })
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• And	you	can	now	access	the	service	to	get	the	desired	characteristic
navigator.bluetooth.requestDevice(options)
.then(device => device.gatt.connect())
.then(server => {
// Getting Battery Service
return server.getPrimaryService('battery_service');
})
.then(service => {
// Getting Battery Level Characteristic.
return service.getCharacteristic('battery_level');
})
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• And	you	can	now	access	the	service	to	get	the	desired	characteristic
navigator.bluetooth.requestDevice(options)
.then(device => device.gatt.connect())
.then(server => {
// Getting Battery Service
return server.getPrimaryService('battery_service');
})
.then(service => {
// Getting Battery Level Characteristic.
return service.getCharacteristic('battery_level');
})
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• You	can	finally	read	the	value	of	the	characteristic
navigator.bluetooth.requestDevice(options)
.then(device => device.gatt.connect())
.then(server => server.getPrimaryService('battery_service'))
.then(service => service.getCharacteristic('battery_level'))
.then(characteristic => {
// Reading Battery Level
return characteristic.readValue();
})
.then(value => {
console.log('Characteristic value: ' + value);
})
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• You	can	finally	read	the	value	of	the	characteristic
navigator.bluetooth.requestDevice(options)
.then(device => device.gatt.connect())
.then(server => server.getPrimaryService('battery_service'))
.then(service => service.getCharacteristic('battery_level'))
.then(characteristic => {
// Reading Battery Level
return characteristic.readValue();
})
.then(value => {
console.log('Characteristic value: ' + value);
})
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• When	reading	the	value,	it	returns	a	ArrayBuffer which	you	need	to	
convert	into	an	int value
navigator.bluetooth.requestDevice(options)
.then(device => device.gatt.connect())
.then(server => server.getPrimaryService('battery_service'))
.then(service => service.getCharacteristic('battery_level'))
.then(characteristic => characteristic.readValue())
.then(value => {
var intVal = value.getUint8(0);
console.log('Battery percentage is ' + intVal);
})
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Web	Bluetooth	API
• Or	subscribe	to	the	notifications
navigator.bluetooth.requestDevice(options)
.then(device => device.gatt.connect())
.then(server => server.getPrimaryService('battery_service'))
.then(service => service.getCharacteristic('battery_level'))
.then(c => {
// Set up event listener for when characteristic value changes.
c.addEventListener('characteristicvaluechanged', console.log);
})
.catch(error => { console.log(error); });
@joel__lord
#midwestjs
Heart	Rate	during	a	talk
15	minutes	before	talk
Stage	fright
Holy	shit,	talk	started	
but	my	laptop	froze
During	the	talk,	
everything	is	under	
control
Talk	is	done,	relaxing
Presented	By
JOEL	LORD
Midwest	JS	August	2017
@joel__lord
joellord
Thank	you
Presented	By
JOEL	LORD
Midwest	JS	August	2017
@joel__lord
joellord
Questions?
1 of 58

Recommended

Let's Get Physical by
Let's Get PhysicalLet's Get Physical
Let's Get PhysicalJoel Lord
253 views54 slides
Getting physical with web bluetooth in the browser hackference by
Getting physical with web bluetooth in the browser hackferenceGetting physical with web bluetooth in the browser hackference
Getting physical with web bluetooth in the browser hackferenceDan Jenkins
1K views81 slides
Can a browser become an IoT Gateway? by
Can a browser become an IoT Gateway?Can a browser become an IoT Gateway?
Can a browser become an IoT Gateway?Sooraj Sanker
19 views77 slides
JSR 82 (bluetooth obex) by
JSR 82 (bluetooth obex)JSR 82 (bluetooth obex)
JSR 82 (bluetooth obex)SMIJava
1.3K views19 slides
HTML5 Web Workers-unleashed by
HTML5 Web Workers-unleashedHTML5 Web Workers-unleashed
HTML5 Web Workers-unleashedPeter Lubbers
5.5K views81 slides
JSR-82 Bluetooth tutorial by
JSR-82 Bluetooth tutorialJSR-82 Bluetooth tutorial
JSR-82 Bluetooth tutorialSoham Sengupta
2.2K views14 slides

More Related Content

Similar to Let's Get Physical

The Mobile Web Revealed For The Java Developer by
The Mobile Web Revealed For The Java DeveloperThe Mobile Web Revealed For The Java Developer
The Mobile Web Revealed For The Java Developerbalunasj
682 views62 slides
Meego Widget Development using Qt WRT @iRajLal by
Meego Widget Development using Qt WRT @iRajLalMeego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLalRaj Lal
990 views46 slides
MongoDB Mobile by
MongoDB Mobile MongoDB Mobile
MongoDB Mobile MongoDB
189 views66 slides
JAM805 - Beyond the Device by
JAM805 -  Beyond the DeviceJAM805 -  Beyond the Device
JAM805 - Beyond the DeviceDr. Ranbijay Kumar
250 views32 slides
IoT Seminar (Oct. 2016) Juan Perez - Microsoft by
IoT Seminar (Oct. 2016) Juan Perez - MicrosoftIoT Seminar (Oct. 2016) Juan Perez - Microsoft
IoT Seminar (Oct. 2016) Juan Perez - MicrosoftOpen Mobile Alliance
932 views14 slides
FIWARE Wednesday Webinars - How to Debug IoT Agents by
FIWARE Wednesday Webinars - How to Debug IoT AgentsFIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE Wednesday Webinars - How to Debug IoT AgentsFIWARE
819 views13 slides

Similar to Let's Get Physical(20)

The Mobile Web Revealed For The Java Developer by balunasj
The Mobile Web Revealed For The Java DeveloperThe Mobile Web Revealed For The Java Developer
The Mobile Web Revealed For The Java Developer
balunasj682 views
Meego Widget Development using Qt WRT @iRajLal by Raj Lal
Meego Widget Development using Qt WRT @iRajLalMeego Widget Development using Qt WRT @iRajLal
Meego Widget Development using Qt WRT @iRajLal
Raj Lal990 views
MongoDB Mobile by MongoDB
MongoDB Mobile MongoDB Mobile
MongoDB Mobile
MongoDB189 views
FIWARE Wednesday Webinars - How to Debug IoT Agents by FIWARE
FIWARE Wednesday Webinars - How to Debug IoT AgentsFIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE Wednesday Webinars - How to Debug IoT Agents
FIWARE819 views
Thadomal IEEE-HTML5-Workshop by Romin Irani
Thadomal IEEE-HTML5-WorkshopThadomal IEEE-HTML5-Workshop
Thadomal IEEE-HTML5-Workshop
Romin Irani992 views
Control Pc Via Bluetooth Enable Mobile by Samiul Hoque
Control Pc Via Bluetooth Enable MobileControl Pc Via Bluetooth Enable Mobile
Control Pc Via Bluetooth Enable Mobile
Samiul Hoque10.3K views
Controlpcviabluetoothenablemobile 091028150632-phpapp01 by nagapriyanka
Controlpcviabluetoothenablemobile 091028150632-phpapp01Controlpcviabluetoothenablemobile 091028150632-phpapp01
Controlpcviabluetoothenablemobile 091028150632-phpapp01
nagapriyanka47 views
Real-Time Web Apps & .NET - What are your options? by Phil Leggetter
Real-Time Web Apps & .NET - What are your options?Real-Time Web Apps & .NET - What are your options?
Real-Time Web Apps & .NET - What are your options?
Phil Leggetter1.5K views
Lecture 5 - Webservers for the Internet of Things by Alexandru Radovici
Lecture 5 - Webservers for the Internet of ThingsLecture 5 - Webservers for the Internet of Things
Lecture 5 - Webservers for the Internet of Things
Alexandru Radovici12.2K views
Controlling Robots Remotely with Azure by Liam Gulliver
Controlling Robots Remotely with AzureControlling Robots Remotely with Azure
Controlling Robots Remotely with Azure
Liam Gulliver28 views
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers by Todd Anglin
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersAccelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Todd Anglin5.3K views
Embracing HTTP in the era of API’s by Visug
Embracing HTTP in the era of API’sEmbracing HTTP in the era of API’s
Embracing HTTP in the era of API’s
Visug661 views
Web of things introduction by 承翰 蔡
Web of things introductionWeb of things introduction
Web of things introduction
承翰 蔡1.1K views
Creating and Using the Flux SQL Datasource | Katy Farmer | InfluxData by InfluxData
Creating and Using the Flux SQL Datasource | Katy Farmer | InfluxData Creating and Using the Flux SQL Datasource | Katy Farmer | InfluxData
Creating and Using the Flux SQL Datasource | Katy Farmer | InfluxData
InfluxData410 views
My customers are using iPhone/Android, but I'm a Microsoft Guy. by Simon Guest
My customers are using iPhone/Android, but I'm a Microsoft Guy.My customers are using iPhone/Android, but I'm a Microsoft Guy.
My customers are using iPhone/Android, but I'm a Microsoft Guy.
Simon Guest3.8K views

More from Joel Lord

From Ceasar Cipher To Quantum Cryptography by
From Ceasar Cipher To Quantum CryptographyFrom Ceasar Cipher To Quantum Cryptography
From Ceasar Cipher To Quantum CryptographyJoel Lord
405 views185 slides
I Don't Care About Security (And Neither Should You) by
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
670 views131 slides
I Don't Care About Security (And Neither Should You) by
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
157 views128 slides
I Don't Care About Security (And Neither Should You) by
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
323 views121 slides
Forgot Password? Yes I Did! by
Forgot Password? Yes I Did!Forgot Password? Yes I Did!
Forgot Password? Yes I Did!Joel Lord
432 views61 slides
I Don't Care About Security (And Neither Should You) by
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)Joel Lord
153 views126 slides

More from Joel Lord(20)

From Ceasar Cipher To Quantum Cryptography by Joel Lord
From Ceasar Cipher To Quantum CryptographyFrom Ceasar Cipher To Quantum Cryptography
From Ceasar Cipher To Quantum Cryptography
Joel Lord405 views
I Don't Care About Security (And Neither Should You) by Joel Lord
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
Joel Lord670 views
I Don't Care About Security (And Neither Should You) by Joel Lord
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
Joel Lord157 views
I Don't Care About Security (And Neither Should You) by Joel Lord
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
Joel Lord323 views
Forgot Password? Yes I Did! by Joel Lord
Forgot Password? Yes I Did!Forgot Password? Yes I Did!
Forgot Password? Yes I Did!
Joel Lord432 views
I Don't Care About Security (And Neither Should You) by Joel Lord
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
Joel Lord153 views
Mot de passe oublié? Absolument! by Joel Lord
Mot de passe oublié? Absolument!Mot de passe oublié? Absolument!
Mot de passe oublié? Absolument!
Joel Lord193 views
Asynchronicity: concurrency. A tale of by Joel Lord
Asynchronicity: concurrency. A tale ofAsynchronicity: concurrency. A tale of
Asynchronicity: concurrency. A tale of
Joel Lord283 views
Learning Machine Learning by Joel Lord
Learning Machine LearningLearning Machine Learning
Learning Machine Learning
Joel Lord452 views
Forgot Password? Yes I Did! by Joel Lord
Forgot Password? Yes I Did!Forgot Password? Yes I Did!
Forgot Password? Yes I Did!
Joel Lord295 views
WTH is a JWT by Joel Lord
WTH is a JWTWTH is a JWT
WTH is a JWT
Joel Lord909 views
I Don't Care About Security (And Neither Should You) by Joel Lord
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
Joel Lord125 views
Forgot Password? Yes I Did! by Joel Lord
Forgot Password? Yes I Did!Forgot Password? Yes I Did!
Forgot Password? Yes I Did!
Joel Lord115 views
I Don't Care About Security (And Neither Should You) by Joel Lord
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
Joel Lord195 views
WTH is a JWT by Joel Lord
WTH is a JWTWTH is a JWT
WTH is a JWT
Joel Lord311 views
Asynchonicity: concurrency. A tale of by Joel Lord
Asynchonicity: concurrency. A tale ofAsynchonicity: concurrency. A tale of
Asynchonicity: concurrency. A tale of
Joel Lord360 views
I Don't Care About Security by Joel Lord
I Don't Care About Security I Don't Care About Security
I Don't Care About Security
Joel Lord247 views
I Don't Care About Security (And Neither Should You) by Joel Lord
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
Joel Lord209 views
I Don't Care About Security (And Neither Should You) by Joel Lord
I Don't Care About Security (And Neither Should You)I Don't Care About Security (And Neither Should You)
I Don't Care About Security (And Neither Should You)
Joel Lord233 views
Secure your SPA with Auth0 by Joel Lord
Secure your SPA with Auth0Secure your SPA with Auth0
Secure your SPA with Auth0
Joel Lord341 views

Recently uploaded

The Dark Web : Hidden Services by
The Dark Web : Hidden ServicesThe Dark Web : Hidden Services
The Dark Web : Hidden ServicesAnshu Singh
5 views24 slides
Marketing and Community Building in Web3 by
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3Federico Ast
14 views64 slides
IETF 118: Starlink Protocol Performance by
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol PerformanceAPNIC
394 views22 slides
Affiliate Marketing by
Affiliate MarketingAffiliate Marketing
Affiliate MarketingNavin Dhanuka
17 views30 slides
information by
informationinformation
informationkhelgishekhar
10 views4 slides
Building trust in our information ecosystem: who do we trust in an emergency by
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergencyTina Purnat
109 views18 slides

Recently uploaded(10)

The Dark Web : Hidden Services by Anshu Singh
The Dark Web : Hidden ServicesThe Dark Web : Hidden Services
The Dark Web : Hidden Services
Anshu Singh5 views
Marketing and Community Building in Web3 by Federico Ast
Marketing and Community Building in Web3Marketing and Community Building in Web3
Marketing and Community Building in Web3
Federico Ast14 views
IETF 118: Starlink Protocol Performance by APNIC
IETF 118: Starlink Protocol PerformanceIETF 118: Starlink Protocol Performance
IETF 118: Starlink Protocol Performance
APNIC394 views
Building trust in our information ecosystem: who do we trust in an emergency by Tina Purnat
Building trust in our information ecosystem: who do we trust in an emergencyBuilding trust in our information ecosystem: who do we trust in an emergency
Building trust in our information ecosystem: who do we trust in an emergency
Tina Purnat109 views
PORTFOLIO 1 (Bret Michael Pepito).pdf by brejess0410
PORTFOLIO 1 (Bret Michael Pepito).pdfPORTFOLIO 1 (Bret Michael Pepito).pdf
PORTFOLIO 1 (Bret Michael Pepito).pdf
brejess04109 views
How to think like a threat actor for Kubernetes.pptx by LibbySchulze1
How to think like a threat actor for Kubernetes.pptxHow to think like a threat actor for Kubernetes.pptx
How to think like a threat actor for Kubernetes.pptx
LibbySchulze15 views

Let's Get Physical