SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
CONCURRENCY
&
RUBY
Rocky	Jaiswal
RubyConf	India	2013
WHY	CONCURRENCY?
ABOUT	ME
Learning	programming	for	the	last	11	years
Did	Java	for	around	8	years
Started	learning	Ruby	~3	years	back
♥	Ruby
♥	the	Ruby	community
Also	learning	some	CoffeeScript	and	Scala
http://rockyj.in
@whatsuprocky
CONCURRENCY?
Concurrency	is	when	two	tasks	can	start,	run,	and
complete	in	overlapping	time	periods
Concurrency	can	be	implemented	even	in	single
processing	units	to	speed	things	up
Concurrency	is	non-deterministic
Whereas	a		parallel	program	is	one	that	merely	runs	on
multiple	processors,	with	the	goal	of	hopefully	running
faster	than	it	would	on	a	single	CPU
THREADS	VS	PROCESSESS
Threads	are	light	weight	processes	that	run	in	the	same
memory	context
Ruby	has	Green	Threads	which	are	managed	by	the	Ruby
process
JRuby	has	real	OS	thread	that	run	parallel	to	the	parent
thread
THREADS	IN	RUBY
SAMPLE	UNICORN	SETUP
15	Unicorns	=	15	Processes
1	Unicorn	Process	~=	150	MB
15	Processes	~=	2	GB	RAM*
Scaling	this	means	more	processes	=	more	memory	=
more	money
Also,	If	you	are	CPU	bound	you	want	to	use	no	more
unicorn	processes	than	you	have	cores,	otherwise	you
overload	the	system	and	slow	down	the	scheduler.
CONCURRENCY	IS	GOOD
JRuby	+	Puma	/	Torquebox
High-Scalability	with	less	memory
Resque	/	Sidekiq
More	workers	and	faster	processing	with	less	memory
SO	IS	IT	ALL	DOOM	AND	GLOOM?
No!
Most	Rails	applications	are	IO	bound
With	MRI	you	are	always	thread	safe
MRI	is	getting	faster	and	GC	is	getting	better
Processes	management	is	optimized
Passenger	is	using	a	hybrid	-	evented	+	threaded	/
process	architecture
THREAD-SAFETY
LET	ME	GIVE	YOU	A	DEMO
Appending	to	Arrays:
MRI	Version
vs
JRuby	Version
DEMO
RUN	CODE	ON	MRI	&	JRUBY
array	=	[]
5.times.map	do
		Thread.new	do	#Init	5	threads
				1000.times	do
						array	<<	nil	#In	each	thread	add	1000	elements	to	the	Ar
				end
		end
end.each(&:join)
puts	array.size
EVEN	APPENDING	TO	ARRAYS	IS
NOT	THREAD	SAFE!
WHAT	ABOUT	RAILS
config.threadsafe!
	def	threadsafe!
		@preload_frameworks	=	true
		@cache_classes						=	true
		@dependency_loading	=	false
		@allow_concurrency		=	true
		self
end
JRUBY	ON	RAILS
DEMO
BAD	COUNTER	CODE
	class	PagesController	<	ApplicationController
		@counter	=	0
		class	<<	self
				attr_accessor	:counter
		end
		#Classic	read-modify-write	problem
		def	index
				counter	=	self.class.counter	#	read
				sleep(0.1)
				counter	+=	1	#update
				sleep(0.1)
				self.class.counter	=	counter	#	write
				users	=	User.all
				puts	"-----------"	+	self.class.counter.to_s	+	"------------"
		end
end
UGLY	SYNCHRONIZED	CODE
	class	PagesController	<	ApplicationController
		@counter	=	0
		@semaphore	=	Mutex.new
		class	<<	self
				attr_accessor	:counter
				attr_accessor	:semaphore
		end
		def	index
				#counter	=	self.class.counter	#	read
				sleep(0.1)
				self.class.semaphore.synchronize	{
						self.class.counter	+=	1	#update
				}
				sleep(0.1)
				#self.class.counter	=	counter	#	write
				users	=	User.all
				puts	"-----------"	+	self.class.counter.to_s	+	"------------"
		end
end
RAILS	4	IS	CONCURRENCY
ENABLED	BY	DEFAULT
CONCURRENCY	INTRODUCES
Race	Conditions
Deadlocks
Starvation
etc.
BUT	GIVES	YOU
Speed
Less	Memory	Usage
SAFE	CONCURRENCY
Don't	do	it.
If	you	must	do	it,	don't	share	data	across
threads.
If	you	must	share	data	across	threads,	don't
share	mutable	data.
If	you	must	share	mutable	data	across	threads,
synchronize	access	to	that	data.
THREAD	SAFETY	IN	JRUBY
LOCKS
ATOMICITY
IMMUTABILITY
ATOMIC	COUNTER
java_import	'java.util.concurrent.atomic.AtomicInteger'
class	PagesController	<	ApplicationController
		@counter	=	AtomicInteger.new(1)	
		
		class	<<	self
				attr_accessor	:counter
		end
		def	index
				sleep(0.1)
				counter	=	self.class.counter.getAndIncrement()	#update
				sleep(0.1)
				users	=	User.all
				puts	"-----------------"	+	counter.to_s	+	"-----------------"
		end
end
ALL	THIS	SUCKS!
95%	of	syncronized	code	is	broken.	The	other	5%	is
written	by	Brian	Goetz.	-	Venkat	Subramaniam
ENTER	ACTOR
THE	ACTOR	MODEL
Introduced	by	Carl	Hewitt	in	1973
Contributions	by	a	lot	of	scholars	and	universities
Popularized	by	Erlang,	now	in	Scala
Simple	and	high-level	abstractions	for	concurrency	and
parallelism
Objects	are	Actors	each	with	their	own	state	which	is	never
shared
Communication	happens	through	messages
Very	lightweight	event-driven	processes	(approximately	2.7
million	actors	per	GB	RAM	[Akka])
THE	ACTOR	MODEL	-2
Easier	to	deal	with	humans	than	with	threads
Like	humans,	Actors	communicate	via	messages
No	state	sharing,	communicate	via	immutable	messages
IMPLEMENTATIONS
PRODUCER	CONSUMER	PROBLEM
Demo	with	JRuby	+	Locks
Demo	with	JRuby	+	Celluloid
PRODUCER	CONSUMER
with	locks
HTTPS://GIST.GITHUB.COM/ROCKY-
JAISWAL/5847810
PRODUCER	CONSUMER
with	actors
HTTPS://GIST.GITHUB.COM/ROCKY-
JAISWAL/5847814
SUMMARY
Concurrency	is	the	need	of	the	hour
MRI	is	thread	safe	by	default	due	to	GIL	/	GVL
JRuby	gives	you	real	concurrency	(RBX	as	well)
With	power	comes	responsibility
Don't	worry,	concurrency	can	be	easy	if	you	follow	the
ground	rules
If	you	want	to	write	concurrent	code	yourself,	use
Actors
*	I	did	not	cover	STM	(provided	by	Clojure)
THANK	YOU!
QUESTIONS
#A	lot	of	this	content	has	been	taken	from	blogs,	wikis	and	books.	I	do	not	claim	it	is	my
own	and	I	wholeheartedly	thank	everyone	who	helped	me	with	this	presentation.

Mais conteúdo relacionado

Mais procurados

JRuby - Everything in a single process
JRuby - Everything in a single processJRuby - Everything in a single process
JRuby - Everything in a single processocher
 
AWS Lambdas are cool - Cheminfo Stories Day 1
AWS Lambdas are cool - Cheminfo Stories Day 1AWS Lambdas are cool - Cheminfo Stories Day 1
AWS Lambdas are cool - Cheminfo Stories Day 1ChemAxon
 
Introduction To Rails
Introduction To RailsIntroduction To Rails
Introduction To RailsEric Gruber
 
My S Q L Replication Getting The Most From Slaves
My S Q L  Replication  Getting  The  Most  From  SlavesMy S Q L  Replication  Getting  The  Most  From  Slaves
My S Q L Replication Getting The Most From SlavesPerconaPerformance
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadKrivoy Rog IT Community
 
Ruby on Rails : First Mile
Ruby on Rails : First MileRuby on Rails : First Mile
Ruby on Rails : First MileGourab Mitra
 
Scaling a Web Service
Scaling a Web ServiceScaling a Web Service
Scaling a Web ServiceLeon Ho
 

Mais procurados (8)

Rubyhosting
RubyhostingRubyhosting
Rubyhosting
 
JRuby - Everything in a single process
JRuby - Everything in a single processJRuby - Everything in a single process
JRuby - Everything in a single process
 
AWS Lambdas are cool - Cheminfo Stories Day 1
AWS Lambdas are cool - Cheminfo Stories Day 1AWS Lambdas are cool - Cheminfo Stories Day 1
AWS Lambdas are cool - Cheminfo Stories Day 1
 
Introduction To Rails
Introduction To RailsIntroduction To Rails
Introduction To Rails
 
My S Q L Replication Getting The Most From Slaves
My S Q L  Replication  Getting  The  Most  From  SlavesMy S Q L  Replication  Getting  The  Most  From  Slaves
My S Q L Replication Getting The Most From Slaves
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High load
 
Ruby on Rails : First Mile
Ruby on Rails : First MileRuby on Rails : First Mile
Ruby on Rails : First Mile
 
Scaling a Web Service
Scaling a Web ServiceScaling a Web Service
Scaling a Web Service
 

Destaque

What lies beneath the beautiful code?
What lies beneath the beautiful code?What lies beneath the beautiful code?
What lies beneath the beautiful code?Niranjan Sarade
 
Lightning Talk - Contribute to Open Source
Lightning Talk - Contribute to Open SourceLightning Talk - Contribute to Open Source
Lightning Talk - Contribute to Open SourceSidu Ponnappa
 
Everything ruby
Everything rubyEverything ruby
Everything rubyajeygore
 
Aspen ideas Festival Talk on Gov20
Aspen ideas Festival Talk on Gov20Aspen ideas Festival Talk on Gov20
Aspen ideas Festival Talk on Gov20Tim O'Reilly
 
clearScienceStrataRx2012
clearScienceStrataRx2012clearScienceStrataRx2012
clearScienceStrataRx2012OReillyStrata
 
Awakening India - Jago Party
Awakening India - Jago PartyAwakening India - Jago Party
Awakening India - Jago PartyKapil Mohan
 
Open Data: From the Information Age to the Action Age (Keynote File)
Open Data: From the Information Age to the Action Age (Keynote File)Open Data: From the Information Age to the Action Age (Keynote File)
Open Data: From the Information Age to the Action Age (Keynote File)Tim O'Reilly
 
Creating actionable marketo reports july, 2013
Creating actionable marketo reports   july, 2013Creating actionable marketo reports   july, 2013
Creating actionable marketo reports july, 2013Inga Romanoff
 
Larry's Free Culture
Larry's Free CultureLarry's Free Culture
Larry's Free CultureKapil Mohan
 
Parzania Movie Preview
Parzania Movie PreviewParzania Movie Preview
Parzania Movie PreviewKapil Mohan
 
What we can take for granted in online communities
What we can take for granted in online communitiesWhat we can take for granted in online communities
What we can take for granted in online communitiesChris Messina
 
BodyTrack: Open Source Tools for Health Empowerment through Self-Tracking
BodyTrack: Open Source Tools for Health Empowerment through Self-Tracking BodyTrack: Open Source Tools for Health Empowerment through Self-Tracking
BodyTrack: Open Source Tools for Health Empowerment through Self-Tracking OSCON Byrum
 
A New Business World Within A Blockchain
A New Business World Within A BlockchainA New Business World Within A Blockchain
A New Business World Within A BlockchainAlex Chepurnoy
 
Pinterest for Business 101
Pinterest for Business 101Pinterest for Business 101
Pinterest for Business 101Nick Armstrong
 
Visual Conversations on Urban Futures - DRS 2016
Visual Conversations on Urban Futures - DRS 2016Visual Conversations on Urban Futures - DRS 2016
Visual Conversations on Urban Futures - DRS 2016serena pollastri
 
A GeoSocial Intelligence Framework for Studying & Promoting Resilience to Sea...
A GeoSocial Intelligence Framework for Studying & Promoting Resilience to Sea...A GeoSocial Intelligence Framework for Studying & Promoting Resilience to Sea...
A GeoSocial Intelligence Framework for Studying & Promoting Resilience to Sea...SMART Infrastructure Facility
 

Destaque (20)

What lies beneath the beautiful code?
What lies beneath the beautiful code?What lies beneath the beautiful code?
What lies beneath the beautiful code?
 
Testing smells
Testing smellsTesting smells
Testing smells
 
Lightning Talk - Contribute to Open Source
Lightning Talk - Contribute to Open SourceLightning Talk - Contribute to Open Source
Lightning Talk - Contribute to Open Source
 
Everything ruby
Everything rubyEverything ruby
Everything ruby
 
Ruby Internals
Ruby InternalsRuby Internals
Ruby Internals
 
Aspen ideas Festival Talk on Gov20
Aspen ideas Festival Talk on Gov20Aspen ideas Festival Talk on Gov20
Aspen ideas Festival Talk on Gov20
 
clearScienceStrataRx2012
clearScienceStrataRx2012clearScienceStrataRx2012
clearScienceStrataRx2012
 
Awakening India - Jago Party
Awakening India - Jago PartyAwakening India - Jago Party
Awakening India - Jago Party
 
Open Data: From the Information Age to the Action Age (Keynote File)
Open Data: From the Information Age to the Action Age (Keynote File)Open Data: From the Information Age to the Action Age (Keynote File)
Open Data: From the Information Age to the Action Age (Keynote File)
 
Creating actionable marketo reports july, 2013
Creating actionable marketo reports   july, 2013Creating actionable marketo reports   july, 2013
Creating actionable marketo reports july, 2013
 
Larry's Free Culture
Larry's Free CultureLarry's Free Culture
Larry's Free Culture
 
Parzania Movie Preview
Parzania Movie PreviewParzania Movie Preview
Parzania Movie Preview
 
What we can take for granted in online communities
What we can take for granted in online communitiesWhat we can take for granted in online communities
What we can take for granted in online communities
 
BodyTrack: Open Source Tools for Health Empowerment through Self-Tracking
BodyTrack: Open Source Tools for Health Empowerment through Self-Tracking BodyTrack: Open Source Tools for Health Empowerment through Self-Tracking
BodyTrack: Open Source Tools for Health Empowerment through Self-Tracking
 
A New Business World Within A Blockchain
A New Business World Within A BlockchainA New Business World Within A Blockchain
A New Business World Within A Blockchain
 
Pinterest for Business 101
Pinterest for Business 101Pinterest for Business 101
Pinterest for Business 101
 
Visual Conversations on Urban Futures - DRS 2016
Visual Conversations on Urban Futures - DRS 2016Visual Conversations on Urban Futures - DRS 2016
Visual Conversations on Urban Futures - DRS 2016
 
A GeoSocial Intelligence Framework for Studying & Promoting Resilience to Sea...
A GeoSocial Intelligence Framework for Studying & Promoting Resilience to Sea...A GeoSocial Intelligence Framework for Studying & Promoting Resilience to Sea...
A GeoSocial Intelligence Framework for Studying & Promoting Resilience to Sea...
 
Cio Exchange08
Cio Exchange08Cio Exchange08
Cio Exchange08
 
Government 2.0
Government 2.0Government 2.0
Government 2.0
 

Semelhante a Concurrency & Ruby

JRuby and Google App Engine
JRuby and Google App EngineJRuby and Google App Engine
JRuby and Google App Enginejoshsmoore
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLBarry Jones
 
Concurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple SpacesConcurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple Spacesluccastera
 
Message Queues in Ruby - An Overview
Message Queues in Ruby - An OverviewMessage Queues in Ruby - An Overview
Message Queues in Ruby - An OverviewPradeep Elankumaran
 
NodeJS or Apache: Unveiling the Differences in Performance, Use Cases, and Se...
NodeJS or Apache: Unveiling the Differences in Performance, Use Cases, and Se...NodeJS or Apache: Unveiling the Differences in Performance, Use Cases, and Se...
NodeJS or Apache: Unveiling the Differences in Performance, Use Cases, and Se...Tien Nguyen
 
What's the "right" PHP Framework?
What's the "right" PHP Framework?What's the "right" PHP Framework?
What's the "right" PHP Framework?Barry Jones
 
Feels Like Ruby - Ruby Kaigi 2010
Feels Like Ruby - Ruby Kaigi 2010Feels Like Ruby - Ruby Kaigi 2010
Feels Like Ruby - Ruby Kaigi 2010Sarah Mei
 
Ruby/Rails Performance Tips
Ruby/Rails Performance TipsRuby/Rails Performance Tips
Ruby/Rails Performance TipsPatrickMcSweeny
 
Node.JS Expreee.JS scale webapp on Google cloud
Node.JS Expreee.JS scale webapp on Google cloudNode.JS Expreee.JS scale webapp on Google cloud
Node.JS Expreee.JS scale webapp on Google cloudJimish Parekh
 
performance_tuning.pdf
performance_tuning.pdfperformance_tuning.pdf
performance_tuning.pdfAlexadiaz52
 
performance_tuning.pdf
performance_tuning.pdfperformance_tuning.pdf
performance_tuning.pdfAlexadiaz52
 
Gluecon 2014 - Bringing Node.js to the JVM
Gluecon 2014 - Bringing Node.js to the JVMGluecon 2014 - Bringing Node.js to the JVM
Gluecon 2014 - Bringing Node.js to the JVMJeremy Whitlock
 
Concurrency in java
Concurrency in javaConcurrency in java
Concurrency in javaSaquib Sajid
 
Languages used by web app development services remotestac x
Languages used by web app development services  remotestac xLanguages used by web app development services  remotestac x
Languages used by web app development services remotestac xRemote Stacx
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails FinalRobert Postill
 

Semelhante a Concurrency & Ruby (20)

JRuby and Google App Engine
JRuby and Google App EngineJRuby and Google App Engine
JRuby and Google App Engine
 
Exploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQLExploring Ruby on Rails and PostgreSQL
Exploring Ruby on Rails and PostgreSQL
 
Concurrency in ruby
Concurrency in rubyConcurrency in ruby
Concurrency in ruby
 
Parallel js
Parallel jsParallel js
Parallel js
 
Concurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple SpacesConcurrent Programming with Ruby and Tuple Spaces
Concurrent Programming with Ruby and Tuple Spaces
 
Message Queues in Ruby - An Overview
Message Queues in Ruby - An OverviewMessage Queues in Ruby - An Overview
Message Queues in Ruby - An Overview
 
re7olabini
re7olabinire7olabini
re7olabini
 
Day 8 - jRuby
Day 8 - jRubyDay 8 - jRuby
Day 8 - jRuby
 
NodeJS or Apache: Unveiling the Differences in Performance, Use Cases, and Se...
NodeJS or Apache: Unveiling the Differences in Performance, Use Cases, and Se...NodeJS or Apache: Unveiling the Differences in Performance, Use Cases, and Se...
NodeJS or Apache: Unveiling the Differences in Performance, Use Cases, and Se...
 
What's the "right" PHP Framework?
What's the "right" PHP Framework?What's the "right" PHP Framework?
What's the "right" PHP Framework?
 
Feels Like Ruby - Ruby Kaigi 2010
Feels Like Ruby - Ruby Kaigi 2010Feels Like Ruby - Ruby Kaigi 2010
Feels Like Ruby - Ruby Kaigi 2010
 
Ruby/Rails Performance Tips
Ruby/Rails Performance TipsRuby/Rails Performance Tips
Ruby/Rails Performance Tips
 
Node.JS Expreee.JS scale webapp on Google cloud
Node.JS Expreee.JS scale webapp on Google cloudNode.JS Expreee.JS scale webapp on Google cloud
Node.JS Expreee.JS scale webapp on Google cloud
 
performance_tuning.pdf
performance_tuning.pdfperformance_tuning.pdf
performance_tuning.pdf
 
performance_tuning.pdf
performance_tuning.pdfperformance_tuning.pdf
performance_tuning.pdf
 
Gluecon 2014 - Bringing Node.js to the JVM
Gluecon 2014 - Bringing Node.js to the JVMGluecon 2014 - Bringing Node.js to the JVM
Gluecon 2014 - Bringing Node.js to the JVM
 
Concurrency in java
Concurrency in javaConcurrency in java
Concurrency in java
 
Languages used by web app development services remotestac x
Languages used by web app development services  remotestac xLanguages used by web app development services  remotestac x
Languages used by web app development services remotestac x
 
DiUS Computing Lca Rails Final
DiUS  Computing Lca Rails FinalDiUS  Computing Lca Rails Final
DiUS Computing Lca Rails Final
 
Rails Concept
Rails ConceptRails Concept
Rails Concept
 

Último

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 

Último (20)

Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 

Concurrency & Ruby