SlideShare a Scribd company logo
1 of 121
Download to read offline
Jordan Moldow and Nadeem Ahmad
PuppetConf 2016
From	Pain	To	Gain:	
A	Puppet	Unit	Tes4ng	Story
Box	is	a	modern	content	management	pla=orm	
that	transforms	how	organiza4ons	work	and	
collaborate	to	achieve	results	faster.
Who	We	Are	
Nadeem	
Produc'vity	Engineering	
Jordan	
Desktop	Engineering
Unit	tes4ng	
monolithic	Puppet	
repositories
Or	perhaps	
spaghe6	repos	
hFps://www.flickr.com/photos/oeuildebarzo/3026845290/		
Maks	Barzo
Unit	tes4ng	
monolithic	Puppet	
repositories
Characteris8cs	of	spaghe6	monoliths	
•  Inter-connected	modules	
•  No	specifica4ons	
•  Organic	growth	
•  Business	logic	everywhere
This	talk	is	not	a	unit	
tes8ng	tutorial
Puppet @ Box
Agenda	
Why unit tesBng?
GeFng started
Making it work
ConBnuous integraBon
1	
2	
3	
4	
5	
Rolling it out
6
Puppet	@	Box	
Importance and scale
Puppet	@	Box	
8,000+	
NODES	
300+	
MODULES	
200+	
CHANGES	PER	WEEK	
115	
AVERAGE	COMMITTERS	PER	
MONTH
Ensuring	Puppet	
correctness	is	cri8cal
Why	unit	tes4ng?	
Our current tesBng process and how we
wanted to improve
Manual	Puppet	tes8ng	@	Box	
~/puppet $ git commit 	
~/puppet $ git push origin $BRANCH	
$ ssh test.server.com
user@test $ sudo puppet agent –-test --environment=$BRANCH
Manual	Puppet	tes8ng	@	Box	
1.  Wait	for	catalog	to	compile	
2.  Wait	for	no-op	run	to	complete	
3.  Review	and	accept	no-op	results	
4.  Wait	for	Puppet	run	to	complete	
5.  Review	state	of	machine	
Running Puppet on a test machine
Manual	Puppet	tes8ng	@	Box		
3:00:00
Time spent by engineers
Other	issues	with	manual	monolith	tes8ng	
•  Cannot	manually	test	every	affected	role	
•  Tests	are	not	easily	repeatable	
Module	M	
Module	C	Module	B	Module	A	
Role	R3	Role	R2	Role	R1	
Cluster	1	 Cluster	2	 Cluster	3
Approaches	to	Puppet	tes8ng	
1.  Manual	
2.  Acceptance	(Beaker)	
3.  Unit/Integra4on
Project	goals	
1.  Tests	can	be	wriPen	for	most	files	
2.  Tests	run	automa8cally		
3.  Tests	run	quickly	
4.  Tests	fail	if	something	is	broken	
5.  Failing	tests	are	reported	to	code	review		
6.  Developers	write	tests	with	their	code
Gefng	started	
First experiment with rspec-puppet
Tools	we	used	
•  puppet	(3.6.2)	
•  puppetlabs_spec_helper	(0.10.2)			
•  rspec	(3.1.0)	
–  Ruby	spec	tes4ng	framework	
•  rspec-puppet	(2.3.0)	
–  Extension	to	rspec	for	tes4ng	Puppet	
modules
Basic	tes8ng 		
Rakefile – Command definiBons
Basic	tes8ng	
.fixtures.yml –	Pointers	to	your	modules
Basic	tes8ng	
spec/spec_helper.rb – Configure rspec-puppet
Basic	tes8ng	
spec/classes/foo/bar_spec.rb
Running	tests	
~/puppet $ rake spec
Run	all	tests	in	a	directory	
	
~/puppet $ rake spec SPEC=spec/classes/foo
Run	all	tests	in	a	file	
	
~/puppet $ rake spec SPEC=spec/classes/foo/bar_spec.rb
Run	all	tests
Running	tests
Basic	tes8ng	
•  This	works!	
•  …on	some	simple	manifests	
•  For	technical	benefits,	this	needs	to	work	on	most	manifests	
•  For	cultural	change,	it	needs	to	work	AND	be	fric4onless
Making	it	work	
Problems we encountered and our
soluBons to them
box_spec_helper
hSps://github.com/jmoldow/box_spec_helper
Problem	#1:	Undefined	facts	
•  rspec-puppet	invokes	Puppet	with	a	bare	minimum	of	facts	provided	
•  Fact	values	default	to	undef	in	manifests	
•  Manifests	won’t	compile	as	expected
Solu8on	#1:	Default	facts	
spec/spec_helper.rb
Problem	#2:	Default	required	aPributes	
•  Resource	collectors	sefng	default	aFributes	
•  In	produc4on,	exec	commands	don't	need	absolute	path	
•  But	tests	will	fail	without	it
Solu8on	#2:	site.pp	symlink	
•  All	of	our	global	defaults	are	in	manifests/site.pp
•  Created	symlink	from	spec/fixtures/manifests/site.pp
Problem	#3:	Produc8on-only	func8ons	
•  Some	custom	func4ons	may	only	work	in	produc4on,	e.g.	
‒  Querying	a	produc4on	data	store	
‒  Accessing	files	that	only	exist	on	Puppet	masters	
•  Any	manifest	that	uses	such	a	func4on	cannot	be	tested	
‒  Nor	can	any	manifests	that	includes	such	a	manifest
Solu8on	#3:	Globally-stubbed	func8ons	
•  Produc4on-only	func4ons	should	always	be	stubbed	
•  Any	test	can	be	wriFen	without	test-specific	stubs	
•  All	other	func4ons,	classes,	types	should	act	as	they	would	in	prod
Solu8on	#3:	Globally-stubbed	func8ons	
•  module_path	can	include	mul4ple	directories	
•  Custom	func4ons	cannot	be	redefined;	first	defini4on	wins	
•  Added	extra	tree	to	front	of	module_path
•  Added	new	modules	with	redefined	func4ons	
Stubbing via module paths
Globally-stubbed	func8on	-	Example
Other	big	enhancements	
•  Simple	test	auto-generator	
•  Accumula4ng	fact,	param	defini4ons	from	mul4ple	blocks	
‒  Including	shared	contexts	
•  Emula4ng	other	opera4ng	systems	
‒  We	were	restricted	on	what	hardware	we	could	run	tests
Con4nuous	Integra4on
First	Itera8on	of	CI 		
Define small beta group of Puppet developers
First	Itera8on	of	CI 		
Run unit tests for their code reviews, report feedback
First	Itera8on	of	CI 		
Run unit tests for their code reviews, report feedback
First	Itera8on	of	CI	
•  Iterate	on	framework	
•  Encourage	beta	testers	to	also	write	new	tests
First	Itera8on	of	CI	
•  Test	suite	takes	6-8	minutes	to	run	
•  Goal:	order	of	seconds
Using	ClusterRunner	to	Run	Tests	
www.clusterrunner.com
ClusterRunner	Puppet	Module	
54
Unlocking	Paralleliza8on	
Find individual test unit
~/puppet $ find spec -name "*_spec.rb"
spec/classes/os_hardening/init_spec.rb
spec/classes/rsyslog/init_spec.rb
spec/classes/rsyslog/package_spec.rb
spec/classes/dashboard/sync_hive_query_runner_spec.rb
spec/classes/pod/delivery_pipeline_spec.rb
spec/classes/yum/centos_extras_spec.rb
spec/classes/dev_env/repo/devtools_for_windows_spec.rb
spec/classes/dev_env/repo/devtools_spec.rb
spec/classes/snmp/server_spec.rb
spec/classes/bind/staging_spec.rb
spec/classes/bind/base_spec.rb
…
Running	tests	
~/puppet $ rake spec
Run	all	tests	in	a	directory	
	
~/puppet $ rake spec SPEC=spec/classes/foo
Run	all	tests	in	a	file	
	
~/puppet $ rake spec SPEC=spec/classes/foo/init_spec.rb
Run	all	tests
WTF??
Unlocking	Paralleliza8on	
rake spec is actually a combinaBon of three subcommands:
~/puppet $ rake spec_prep
Creates	fixtures	needed	by	all	tests
Unlocking	Paralleliza8on	
rake spec is actually a combinaBon of three subcommands:
~/puppet $ rake spec_clean
Deletes	all	test	fixtures
Unlocking	Paralleliza8on	
rake spec is actually a combinaBon of three subcommands:
~/puppet $ rake spec_standalone
Runs	the	actual	test	
(assumes	test	fixtures	are	present)
clusterrunner.yaml
Ini8al	Time	(Serial)	
Final	Time	(Parallel)	
420	
20	
Total	Test	Time	(seconds)	
Test	Run8me	for	~400	Puppet	Unit	Tests
Workflow	
$ git push	
post-receive
Git hook
Git		
Server	
ClusterRunner	
Master	
Jenkins	
Master
Build	State	in	Jenkins
Rolling	It	Out
Roadblocks	
•  Test	results	need	to	be	posted	to	code	review	for	all	developers	
•  Post-merge	test	results	need	to	be	easily	available
Conclusion
Project	Goals	Checklist	
ü 	Tests	can	be	wriPen	for	most	files	
ü 	Tests	run	automa8cally	
ü 	Tests	run	quickly	
ü 	Tests	fail	if	something	is	broken	
q 	Failing	tests	are	reported	to	code	review	
q 	Developers	write	tests	with	their	code
Possible	future	work	
•  Contribute	to	rspec-puppet,	puppetlabs_spec_helper	
•  Create	standalone	rubygem	
hSps://github.com/jmoldow/box_spec_helper
Ques8ons?	
•  box_spec_helper
‒  hFps://github.com/jmoldow/box_spec_helper	
•  Contact	
‒  Box	
‒  oss@box.com	
‒  opensource.box.com	
‒  www.box.com/careers/	
‒  Nadeem	
‒  nadeem@box.com	
‒  github.com/nadeemahmad	
‒  Jordan	
‒  jmoldow@box.com	
‒  github.com/jmoldow
Using	the	Template	and	Guidelines	
•  Refer	to	this	document	for	rules	and	recommenda4ons	for	the	
treatment	of	graphic	elements	
•  Always	start	a	new	presenta4on	using	the	Box	corporate	template	and	
make	edits	from	there;	this	will	ensure	you	always	have	the	correct	
styles,	color	paleFe	and	fonts	in	use	
•  For	layout	inspira4on,	please	refer	to	the	key	slides	presenta4on
Color	and	Font	Themes	
How to Save Themes…
Start	by	opening	the	Box	
Corporate	Template	and	
clicking	on	the	Design	tab.	
Save	the	colors	from	the	
template	to	your	system	by	
clicking	Colors	and	Create	New	
Theme	Colors	and	save	as	Box.	
Do	the	same	thing	for	
the	template	fonts.	
Create	New	Theme	
Fonts	and	save	as	Box.
Bullet	Slide	Treatment	(Calibri	Regular	24pt)	
•  Bullets	are	sentence	case	(Calibri	Regular	20pt)	
‒  Second-line	bullets	are	Calibri	16pt	
‒  Third-line	bullets	are	Calibri	14pt	
•  Limit	the	number	of	bullets	on	a	slide	
•  Text	highlights	are	Calibri	Bold,	but	not	underlined	
•  Try	not	to	go	below	the	recommended	font	sizes
Bullet	Slide	With	Sub-8tle	Treatment	
•  Try	to	keep	your	use	of	bullet	slides	to	a	minimum	
•  Be	crea4ve	and	think	visually	
•  If	you	need	to	source	something	copy	and	paste	the	text	box	at	the	
boFom	les	onto	your	page	
SubBtle Text Placeholder Title Case (Calibri 20pt)
Source:	Gray	Calibri	Regular	10pt
Centered	Bullet	Slide	Treatment	
•  Bullets	are	sentence	case	(Calibri	Regular	20pt)	
‒  Second-line	bullets	are	Calibri	16pt	
‒  Third-line	bullets	are	Calibri	14pt	
•  Limit	the	number	of	bullets	on	a	slide	
•  Text	highlights	are	Calibri	Bold,	but	not	underlined	
•  Try	not	to	go	below	the	recommended	font	sizes
Centered	Bullet	Slide	With	Sub-8tle	Treatment	
•  Try	to	keep	your	use	of	bullet	slides	to	a	minimum	
•  Be	crea4ve	and	think	visually	
•  If	you	need	to	source	something	copy	and	paste	the	text	box	at	the	
boFom	les	onto	your	page	
SubBtle Text Placeholder Title Case (Calibri 22pt)
Source:	Gray	Calibri	Regular	10pt
Segue	Slide	Title	Goes	Here	and	
Can	Be	a	Few	Lines	in	Length	
SubBtle goes here in sentence case
Segue	Slide	Title	Goes	Here	and	
Can	Be	a	Few	Lines	in	Length	
SubBtle goes here in sentence case
Segue	Slide	Title	Goes	Here	and	
Can	Be	a	Few	Lines	in	Length	
SubBtle goes here in sentence case
Segue	Slide	Title	Goes	Here	and	
Can	Be	a	Few	Lines	in	Length	
SubBtle goes here in sentence case
Segue	Slide	Title	Goes	Here	and	
Can	Be	a	Few	Lines	in	Length	
SubBtle goes here in sentence case
Segue	Slide	Title	Goes	Here	and	
Can	Be	a	Few	Lines	in	Length	
SubBtle goes here in sentence case
Segue	Slide	Title	Goes	Here	and	
Can	Be	a	Few	Lines	in	Length	
SubBtle goes here in sentence case
Enter Btle for secBon one here and use sentence case
Agenda	Slide	Design	
Enter Btle for secBon two here and use sentence case
Enter Btle for secBon three here and use sentence case
Enter Btle for secBon four here and use sentence case
Enter Btle for secBon five here and use sentence case
1	
2	
3	
4	
5
Enter Btle for secBon one here and use sentence case
Agenda	Slide	Design	With	Highlight	for	Each	Sec8on	
Enter Btle for secBon two here and use sentence case
Enter Btle for secBon three here and use sentence case
Enter Btle for secBon four here and use sentence case
Enter Btle for secBon five here and use sentence case
1	
2	
3	
4	
5
Enter Btle for secBon one here and use sentence case
Agenda	Slide	Design	With	Highlight	for	Each	Sec8on	
Enter Btle for secBon two here and use sentence case
Enter Btle for secBon three here and use sentence case
Enter Btle for secBon four here and use sentence case
Enter Btle for secBon five here and use sentence case
1	
2	
3	
4	
5
Enter Btle for secBon one here and use sentence case
Agenda	Slide	Design	With	Highlight	for	Each	Sec8on	
Enter Btle for secBon two here and use sentence case
Enter Btle for secBon three here and use sentence case
Enter Btle for secBon four here and use sentence case
Enter Btle for secBon five here and use sentence case
1	
2	
3	
4	
5
Enter Btle for secBon one here and use sentence case
Agenda	Slide	Design	With	Highlight	for	Each	Sec8on	
Enter Btle for secBon two here and use sentence case
Enter Btle for secBon three here and use sentence case
Enter Btle for secBon four here and use sentence case
Enter Btle for secBon five here and use sentence case
1	
2	
3	
4	
5
Enter Btle for secBon one here and use sentence case
Agenda	Slide	Design	With	Highlight	for	Each	Sec8on	
Enter Btle for secBon two here and use sentence case
Enter Btle for secBon three here and use sentence case
Enter Btle for secBon four here and use sentence case
Enter Btle for secBon five here and use sentence case
1	
2	
3	
4	
5
Enter	4tle	for	sec4on	one	here	and	use	sentence	case	
Agenda	Slide	Color	Coding	Op8on	
Use different colors to color code each secBon/segue slide
Enter	4tle	for	sec4on	two	here	and	use	sentence	case	
Enter	4tle	for	sec4on	three	here	and	use	sentence	case	
Enter	4tle	for	sec4on	four	here	and	use	sentence	case	
Enter	4tle	for	sec4on	five	here	and	use	sentence	case	
1	
2	
3	
4	
5
Chart	Slide	With	Mul8ple	Colors	
Sub-Btle or Chart Title Here in Title Case
76	
60	
44	
57	
65	
86	
72	
0
20
40
60
80
100
Category	1	
Axis Title Goes Here in Title Case Calibri 16pt
Series 1
Series 2
Series 3
Series 4
Series 5
Series 6
Series 7
Chart	Slide	With	Mul8ple	Data	Bars	Within	Each	Category		
Sub-Btle or Chart Title Here in Title Case
76	 75	
69	
88	
60	
65	
57	
63	
44	
50	
62	
72	
0
20
40
60
80
100
Category	1	 Category	2	 Category	3	 Category	4	
Axis Title Goes Here in Title Case Calibri 16pt
Series	1	
Series	2	
Series	3
“
Place	a	quote	from	someone	really,	
really	important	and	it	can	be	up	to	
three	lines…	
Author	Name	Here	
Author	Title	and/or	Date	Here
HEADER	
Suppor4ng	text	
goes	here	under	
the	number	
HEADER	
Suppor4ng	text	
goes	here	under	
the	number	
HEADER	
Suppor4ng	text	
goes	here	under	
the	number	
2M	 15M	 7B	
Big	Number	Treatment
Process	Diagram	Treatment	
See Style Page for More Color OpBons
96	
1	 2	 3	 4	
Suppor4ng	text	
goes	here	under	
the	number	
Suppor4ng	text	
goes	here	under	
the	number	
Suppor4ng	text	
goes	here	under	
the	number	
Suppor4ng	text	
goes	here	under	
the	number
Process	Diagram	Treatment	
You Can Use the Blue Bar to House Heavy Content
Title	Goes	Here	
•  One	bullet		
•  Two	bullet	
•  Three	bullet	
	
Title	Goes	Here	
•  One	bullet		
•  Two	bullet	
•  Three	bullet	
Title	Goes	Here	
•  One	bullet		
•  Two	bullet	
•  Three	bullet	
Title	Goes	Here	
•  One	bullet		
•  Two	bullet	
•  Three	bullet	
1	 2	 3	 4
Box	With	Bullet	Treatment	
•  One	bullet		
•  Two	bullet	
•  Three	bullet	
•  One	bullet		
•  Two	bullet	
•  Three	bullet	
•  One	bullet		
•  Two	bullet	
•  Three	bullet	
Title	Here	 Title	Here	 Title	Here
Table	Layout	Treatment	
SubBtle Text Placeholder Title Case (Calibri 20pt)
Header	 Header	 Header	 Header	
Title	One	 Informa4on	 Informa4on	 Informa4on	
Title	Two	 Informa4on	 Informa4on	 Informa4on	
Title	Three	 Informa4on	 Informa4on	 Informa4on	
Title	Four	 Informa4on	 Informa4on	 Informa4on	
Title	Five	 Informa4on	 Informa4on	 Informa4on	
Title	Six	 Informa4on	 Informa4on	 Informa4on	
Title	Seven	 Informa4on	 Informa4on	 Informa4on
Big	Idea	Goes	Here	With	Highlight	
in	Calibri	Bold	(40	pt)
Use	this	area	for		
a	big	idea,	make		
sure	your	image	has	
enough	clear	space	+	
contrast	so	you	can	
ensure	readability
You	can	use	this	area	for	
a	text	treatment	that	
supports	your	chosen	
imagery
You	can	use	this	area	for	
a	text	treatment	that	
supports	your	chosen	
imagery
You	can	use	this	area	for	
a	text	treatment	that	
supports	your	chosen	
imagery
You	can	use	this	area	for	
a	text	treatment	that	
supports	your	chosen	
imagery
You	can	use	this	area	for	
a	text	treatment	that	
supports	your	chosen	
imagery
You	can	use	this	area	for	
a	text	treatment	that	
supports	your	chosen	
imagery
You	can	use	this	area	for	
a	text	treatment	that	
supports	your	chosen	
imagery
Image	Treatment	With	Cap8on	Layout	
How to Add Your Own Photos and Crop Properly…
Insert	one	of	the	Picture	with	
Cap4on	layouts.	Click	on	the	icon	
at	the	center	to	add	your	image.		
Your	image	will	populate	the	
container	but	you	will	likely	need	
to	adjust	the	crop.	
Click	on	the	image	and	the	format	
tab	and	then	select	crop.
Image	Treatment	With	Cap8on	Layout	(Con8nued)	
How to Add Your Own Photos and Crop Properly…
Click	on	the	grayed	out	por4on	of	
the	image	and	drag	to	the	les	or	
right	un4l	you	are	happy	with	the	
crop.	
Click	out	of	the	cropped	image	to	
set	it	and	your	image	is	ready	to	
go.
Image	With	Bullets	Treatment		
Insert Your Own Photo, See Slide 39 for InstrucBons
•  Bullet	text	here	
•  Some	more	bullet	text	
•  Another	short	bullet	
•  Last	bullet	goes	here
Logo	With	Bullets	Treatment		
Insert Your Chosen Logo to the Lek of the Line
•  Bullet	text	here	
•  Some	more	bullet	text	
•  Another	short	bullet	
•  Last	bullet	goes	here
Image	Treatment	for	Two	Images	
Sub-Btle or Secondary InformaBon Here
Image	Treatment	for	Three	Images	
Sub-Btle or Secondary InformaBon Here
Mul8ple	Image	Treatment	
Sub-Btle or Secondary InformaBon Here
Mul8ple	Image	Treatment	
How to Insert MulBple Images…
This	layout	will	appear.	Next,	click	
the	icon	to	insert	an	image.		
Navigate	to	your	image	and	
insert	it.	Repeat	for	all	the	image	
boxes.	For	instruc4ons	on	how	
to	crop	your	image	see	page	39.	
Click	the	New	Slide	tab	and	select	
Mul4ple	Image	Layout.
Screen	Shot	Treatment	With	Browser	Window
Screen	Shot	Treatment	With	Browser	Window	
How to Drop in Your Screen Shot…
The	browser	window	is	like	a	frame	
so	anything	you	drop	behind	it	will	
show	through.	
Drop	in	your	screen	shot,	go	to	
the	format	menu	and	crop	it	to	
show	only	what	you	want.	
Last,	be	sure	to	right	click	on	your	
screen	shot	and	send	to	back	so	it	
tucks	behind	the	browser	window	
frame.
Color	PalePe	
Hex# 22A7F0
 Hex# 2A62B9
 Hex# 2D3D4F
 Hex# BCC1C7
Hex# 3FB87F
 Hex# 955CA5
Hex# F7931D
 Hex# E33D55
Hex# 74808C
Primary
Secondary
Styles	and	Treatments	
Click	on	these	logos/icons	and	you	
can	recolor	them	within	PowerPoint	
as	needed.	Be	sure	to	follow	brand	
guidelines	for	usage	and	colors.	
Various	template	colors	can	be	
used	for	shapes.	Shapes	should	
have	a	4pt	line	stroke.	
	
Gradient	line	can	be	used	to	
separate	content	and	should	have	
a	1pt	line	stroke.	
Primary
Secondary
Video	in	Your	Presenta8on	
How to Insert Video and Set Your Playback SeFngs…
To	insert	a	video	click	insert	on	
the	menu	bar		
Next	select	video	and	navigate	to	
your	video.	
Once	your	video	is	on	the	slide	and	
you	click	on	it,	you	will	get	a	new	
menu	tab.	You	can	now	make	
changes	to	both	the	format	and	
playback	of	your	video.	
Use	these	sefngs	for	video	playback:	
Start	Automa4cally,	Play	Full	Screen,	
and	Hide	While	Not	Playing.	This	will	
ensure	a	consistent	look	within	all	Box	
presenta4ons.

More Related Content

Viewers also liked

Programação IV Encontro Presencial de Monitores Polo Regional Norte
Programação IV Encontro Presencial de Monitores Polo Regional NorteProgramação IV Encontro Presencial de Monitores Polo Regional Norte
Programação IV Encontro Presencial de Monitores Polo Regional Nortearmand0lima
 
Investors deck v3
Investors deck v3Investors deck v3
Investors deck v3N. Brizuela
 
Métodos anticonceptivos y esterilización presentación
Métodos anticonceptivos y esterilización presentación Métodos anticonceptivos y esterilización presentación
Métodos anticonceptivos y esterilización presentación bryam pedrero
 
Ruben novotny liderazgo
Ruben  novotny  liderazgoRuben  novotny  liderazgo
Ruben novotny liderazgoRuben Novotny
 
Hilder - Agenda - Pintado en photoshop
Hilder - Agenda - Pintado en photoshopHilder - Agenda - Pintado en photoshop
Hilder - Agenda - Pintado en photoshopJorge Ugas Figueroa
 
Brochura Digital Beyondesign (versão PT)
Brochura Digital Beyondesign (versão PT)Brochura Digital Beyondesign (versão PT)
Brochura Digital Beyondesign (versão PT)BeyondesignPortugal
 
PuppetConf 2016: Deconfiguration Management: Making Puppet Clean Up Its Own M...
PuppetConf 2016: Deconfiguration Management: Making Puppet Clean Up Its Own M...PuppetConf 2016: Deconfiguration Management: Making Puppet Clean Up Its Own M...
PuppetConf 2016: Deconfiguration Management: Making Puppet Clean Up Its Own M...Puppet
 
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...Puppet
 

Viewers also liked (17)

Foami
FoamiFoami
Foami
 
Programação IV Encontro Presencial de Monitores Polo Regional Norte
Programação IV Encontro Presencial de Monitores Polo Regional NorteProgramação IV Encontro Presencial de Monitores Polo Regional Norte
Programação IV Encontro Presencial de Monitores Polo Regional Norte
 
Kishore Shanthabai kaale
Kishore Shanthabai kaaleKishore Shanthabai kaale
Kishore Shanthabai kaale
 
Hola
HolaHola
Hola
 
PSL Profile
PSL ProfilePSL Profile
PSL Profile
 
Investors deck v3
Investors deck v3Investors deck v3
Investors deck v3
 
Bitácora mariqueo
Bitácora mariqueoBitácora mariqueo
Bitácora mariqueo
 
Métodos anticonceptivos y esterilización presentación
Métodos anticonceptivos y esterilización presentación Métodos anticonceptivos y esterilización presentación
Métodos anticonceptivos y esterilización presentación
 
PPT.Bab 2 9b/20
PPT.Bab 2 9b/20PPT.Bab 2 9b/20
PPT.Bab 2 9b/20
 
Ruben novotny liderazgo
Ruben  novotny  liderazgoRuben  novotny  liderazgo
Ruben novotny liderazgo
 
250 diapositivas
250 diapositivas250 diapositivas
250 diapositivas
 
Hilder - Agenda - Pintado en photoshop
Hilder - Agenda - Pintado en photoshopHilder - Agenda - Pintado en photoshop
Hilder - Agenda - Pintado en photoshop
 
New Resume Elaine
New Resume ElaineNew Resume Elaine
New Resume Elaine
 
Brochura Digital Beyondesign (versão PT)
Brochura Digital Beyondesign (versão PT)Brochura Digital Beyondesign (versão PT)
Brochura Digital Beyondesign (versão PT)
 
Diesel Electronic Engine Control Cert
Diesel Electronic Engine Control CertDiesel Electronic Engine Control Cert
Diesel Electronic Engine Control Cert
 
PuppetConf 2016: Deconfiguration Management: Making Puppet Clean Up Its Own M...
PuppetConf 2016: Deconfiguration Management: Making Puppet Clean Up Its Own M...PuppetConf 2016: Deconfiguration Management: Making Puppet Clean Up Its Own M...
PuppetConf 2016: Deconfiguration Management: Making Puppet Clean Up Its Own M...
 
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...
PuppetConf 2016: Customer Keynote - Digital transformation: How IT Transforme...
 

Similar to From Pain to Gain: A Puppet Unit Testing Story</b

INTRODUCTION TO MACHINE LEARNING FOR MATERIALS SCIENCE
INTRODUCTION TO MACHINE LEARNING FOR MATERIALS SCIENCEINTRODUCTION TO MACHINE LEARNING FOR MATERIALS SCIENCE
INTRODUCTION TO MACHINE LEARNING FOR MATERIALS SCIENCEIPutuAdiPratama
 
Strategies for Puppet code upgrade and refactoring
Strategies for Puppet code upgrade and refactoringStrategies for Puppet code upgrade and refactoring
Strategies for Puppet code upgrade and refactoringAlessandro Franceschi
 
Denver Salesforce DUG DF 2018 roundup
Denver Salesforce DUG DF 2018 roundup Denver Salesforce DUG DF 2018 roundup
Denver Salesforce DUG DF 2018 roundup Mike Tetlow
 
Javascript Common Design Patterns
Javascript Common Design PatternsJavascript Common Design Patterns
Javascript Common Design PatternsPham Huy Tung
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE WorkshopPuppet
 
Vietnam qa meetup
Vietnam qa meetupVietnam qa meetup
Vietnam qa meetupSyam Sasi
 
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...JSFestUA
 
Python Interview Questions And Answers 2019 | Edureka
Python Interview Questions And Answers 2019 | EdurekaPython Interview Questions And Answers 2019 | Edureka
Python Interview Questions And Answers 2019 | EdurekaEdureka!
 
Cloudstack Continuous Delivery
Cloudstack Continuous DeliveryCloudstack Continuous Delivery
Cloudstack Continuous Deliverybuildacloud
 
Product discovery engineering point of view
Product discovery   engineering point of viewProduct discovery   engineering point of view
Product discovery engineering point of viewEduardo Ferro Aldama
 
Master class in modern Java
Master class in modern JavaMaster class in modern Java
Master class in modern JavaMiro Cupak
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projectsVincent Massol
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?Dmitri Shiryaev
 
Two Scope of Django 1.6 Chapter 20 and 21
Two Scope of Django 1.6  Chapter 20 and 21Two Scope of Django 1.6  Chapter 20 and 21
Two Scope of Django 1.6 Chapter 20 and 21Gu-yuan Lin
 
Getting Started with Test-Driven Development at PHPtek 2023
Getting Started with Test-Driven Development at PHPtek 2023Getting Started with Test-Driven Development at PHPtek 2023
Getting Started with Test-Driven Development at PHPtek 2023Scott Keck-Warren
 
Cooking the Cake for Nuget packages
Cooking the Cake for Nuget packagesCooking the Cake for Nuget packages
Cooking the Cake for Nuget packagesSergey Dzyuban
 
Testing 2: Advanced Test Management
Testing 2: Advanced Test Management Testing 2: Advanced Test Management
Testing 2: Advanced Test Management Inflectra
 
Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023Scott Keck-Warren
 
Getting Started with Selenium
Getting Started with SeleniumGetting Started with Selenium
Getting Started with SeleniumDave Haeffner
 
Test Drive Development
Test Drive DevelopmentTest Drive Development
Test Drive Developmentsatya sudheer
 

Similar to From Pain to Gain: A Puppet Unit Testing Story</b (20)

INTRODUCTION TO MACHINE LEARNING FOR MATERIALS SCIENCE
INTRODUCTION TO MACHINE LEARNING FOR MATERIALS SCIENCEINTRODUCTION TO MACHINE LEARNING FOR MATERIALS SCIENCE
INTRODUCTION TO MACHINE LEARNING FOR MATERIALS SCIENCE
 
Strategies for Puppet code upgrade and refactoring
Strategies for Puppet code upgrade and refactoringStrategies for Puppet code upgrade and refactoring
Strategies for Puppet code upgrade and refactoring
 
Denver Salesforce DUG DF 2018 roundup
Denver Salesforce DUG DF 2018 roundup Denver Salesforce DUG DF 2018 roundup
Denver Salesforce DUG DF 2018 roundup
 
Javascript Common Design Patterns
Javascript Common Design PatternsJavascript Common Design Patterns
Javascript Common Design Patterns
 
Virtual CD4PE Workshop
Virtual CD4PE WorkshopVirtual CD4PE Workshop
Virtual CD4PE Workshop
 
Vietnam qa meetup
Vietnam qa meetupVietnam qa meetup
Vietnam qa meetup
 
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
JS Fest 2018. Никита Галкин. Микросервисная архитектура с переиспользуемыми к...
 
Python Interview Questions And Answers 2019 | Edureka
Python Interview Questions And Answers 2019 | EdurekaPython Interview Questions And Answers 2019 | Edureka
Python Interview Questions And Answers 2019 | Edureka
 
Cloudstack Continuous Delivery
Cloudstack Continuous DeliveryCloudstack Continuous Delivery
Cloudstack Continuous Delivery
 
Product discovery engineering point of view
Product discovery   engineering point of viewProduct discovery   engineering point of view
Product discovery engineering point of view
 
Master class in modern Java
Master class in modern JavaMaster class in modern Java
Master class in modern Java
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
 
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?Hadoop:  Big Data Stacks validation w/ iTest  How to tame the elephant?
Hadoop: Big Data Stacks validation w/ iTest How to tame the elephant?
 
Two Scope of Django 1.6 Chapter 20 and 21
Two Scope of Django 1.6  Chapter 20 and 21Two Scope of Django 1.6  Chapter 20 and 21
Two Scope of Django 1.6 Chapter 20 and 21
 
Getting Started with Test-Driven Development at PHPtek 2023
Getting Started with Test-Driven Development at PHPtek 2023Getting Started with Test-Driven Development at PHPtek 2023
Getting Started with Test-Driven Development at PHPtek 2023
 
Cooking the Cake for Nuget packages
Cooking the Cake for Nuget packagesCooking the Cake for Nuget packages
Cooking the Cake for Nuget packages
 
Testing 2: Advanced Test Management
Testing 2: Advanced Test Management Testing 2: Advanced Test Management
Testing 2: Advanced Test Management
 
Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023Getting Started with Test-Driven Development at Longhorn PHP 2023
Getting Started with Test-Driven Development at Longhorn PHP 2023
 
Getting Started with Selenium
Getting Started with SeleniumGetting Started with Selenium
Getting Started with Selenium
 
Test Drive Development
Test Drive DevelopmentTest Drive Development
Test Drive Development
 

More from Puppet

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyamlPuppet
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)Puppet
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscodePuppet
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twentiesPuppet
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codePuppet
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approachPuppet
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationPuppet
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliancePuppet
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowPuppet
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Puppet
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppetPuppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkPuppet
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping groundPuppet
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy SoftwarePuppet
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User GroupPuppet
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsPuppet
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyPuppet
 

More from Puppet (20)

Puppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepoPuppet camp2021 testing modules and controlrepo
Puppet camp2021 testing modules and controlrepo
 
Puppetcamp r10kyaml
Puppetcamp r10kyamlPuppetcamp r10kyaml
Puppetcamp r10kyaml
 
2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)2021 04-15 operational verification (with notes)
2021 04-15 operational verification (with notes)
 
Puppet camp vscode
Puppet camp vscodePuppet camp vscode
Puppet camp vscode
 
Modules of the twenties
Modules of the twentiesModules of the twenties
Modules of the twenties
 
Applying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance codeApplying Roles and Profiles method to compliance code
Applying Roles and Profiles method to compliance code
 
KGI compliance as-code approach
KGI compliance as-code approachKGI compliance as-code approach
KGI compliance as-code approach
 
Enforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automationEnforce compliance policy with model-driven automation
Enforce compliance policy with model-driven automation
 
Keynote: Puppet camp compliance
Keynote: Puppet camp complianceKeynote: Puppet camp compliance
Keynote: Puppet camp compliance
 
Automating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNowAutomating it management with Puppet + ServiceNow
Automating it management with Puppet + ServiceNow
 
Puppet: The best way to harden Windows
Puppet: The best way to harden WindowsPuppet: The best way to harden Windows
Puppet: The best way to harden Windows
 
Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020Simplified Patch Management with Puppet - Oct. 2020
Simplified Patch Management with Puppet - Oct. 2020
 
Accelerating azure adoption with puppet
Accelerating azure adoption with puppetAccelerating azure adoption with puppet
Accelerating azure adoption with puppet
 
Puppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael PinsonPuppet catalog Diff; Raphael Pinson
Puppet catalog Diff; Raphael Pinson
 
ServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin ReeuwijkServiceNow and Puppet- better together, Kevin Reeuwijk
ServiceNow and Puppet- better together, Kevin Reeuwijk
 
Take control of your dev ops dumping ground
Take control of your  dev ops dumping groundTake control of your  dev ops dumping ground
Take control of your dev ops dumping ground
 
100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software100% Puppet Cloud Deployment of Legacy Software
100% Puppet Cloud Deployment of Legacy Software
 
Puppet User Group
Puppet User GroupPuppet User Group
Puppet User Group
 
Continuous Compliance and DevSecOps
Continuous Compliance and DevSecOpsContinuous Compliance and DevSecOps
Continuous Compliance and DevSecOps
 
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick MaludyThe Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
The Dynamic Duo of Puppet and Vault tame SSL Certificates, Nick Maludy
 

Recently uploaded

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 

Recently uploaded (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 

From Pain to Gain: A Puppet Unit Testing Story</b