SlideShare a Scribd company logo
METAPROGRAMMING
An Intro to
Metaprogramming
in R
y tho?
how it works
my journey
programs that understand or
modify programs
dplyr > pandas
dplyr > pandas
df
|
>
filter(col1
=
=
1, col2
=
=
1)
df.query('col1
=
=
1 & col2
=
=
1')
df[['col1']].drop_duplicates() df
|
>
distinct(col1)
df.assign(c=df['a']
-
df['b']) df
|
>
mutate(c = a - b)
df.groupby('col1').agg({'col1': 'mean'})
df
|
>
group_by(col1)
|
>
summarize(mean(col1))
df
|
>
group_by(col1)
|
>
summarize(mean(col2))
df
|
>
group_by(col1)
|
>
summarize(mean(col2))
-Matt Harrison, Author of E
ff
ective Pandas
“I've had people say, “This is the worst code that I've
ever seen."…And then, on the flip side, I get people
like, "This is awesome. This changed how I write code.
My life is much better…”
a1 = autos[cols]
cyls = autos.cylinders.fillna(0)
cyls2 = cyls.astype('int8')
a1['cylinders'] = cyls2
displ = a1.displ
displ2 = displ.fillna(0)
displ3 = displ2.astype('float16')
a1.displ = displ3
a1.drive = autos.drive.fillna('Other').astype('category')
a1['automatic'] = autos.trany.str.contains('Auto')
speed = autos.trany.str.extract(r'(d)+')
speedfill = speed.fillna('20')
speedint = speedfill.astype('int8')
a1['speeds'] = speedint
a1.createdOn = pd.to_datetime(
autos.createdOn).dt.tz_localize('America/New_York')
a1.ffs = autos.eng_dscr.str.contains('FFS')
a1['highway08'] = autos.highway08.astype('int8')
a1['city08'] = autos.city08.astype('int8')
a1['comb08'] = autos.comb08.astype('int16')
a1['fuelCost08'] = autos.fuelCost08.astype('int16')
a1['range'] = autos.range.astype('int16')
a1['make'] = autos.make.astype('category')
a3 = a1.drop(columns=['trany', 'eng_dscr'])
(autos
[cols]
# create var
.pipe(get_var, 'df3')
.assign(cylinders=autos.cylinders.fillna(0).astype('int8'),
displ=autos.displ.fillna(0).astype('float16'),
drive=autos.drive.fillna('Other').astype('category'),
automatic=autos.trany.str.contains('Auto'),
speeds=autos.trany.str.extract(
r'(d)+').fillna('20').astype('int8'),
createdOn=pd.to_datetime(autos.createdOn.replace({' EDT': '-04
:
00',
' EST': '-05
:
00'}, regex=True), utc=True).dt.tz_convert('America/New_York'),
ffs=autos.eng_dscr.str.contains('FFS')
)
# debug pipe
.pipe(lambda df: display(df) or df)
.astype({'highway08': 'int8', 'city08': 'int16', 'comb08': 'int16', 'fuelCost08': 'int16',
'range': 'int16', 'year': 'int16', 'make': 'category'})
.drop(columns=['trany', 'eng_dscr'])
)
(autos
[cols]
# create var
.pipe(get_var, 'df3')
.assign(cylinders=autos.cylinders.fillna(0).astype('int8'),
displ=autos.displ.fillna(0).astype('float16'),
drive=autos.drive.fillna('Other').astype('category'),
automatic=autos.trany.str.contains('Auto'),
speeds=autos.trany.str.extract(
r'(d)+').fillna('20').astype('int8'),
createdOn=pd.to_datetime(autos.createdOn.replace({' EDT': '-04
:
00',
' EST': '-05
:
00'}, regex=True), utc=True).dt.tz_convert('America/New_York'),
ffs=autos.eng_dscr.str.contains('FFS')
)
# debug pipe
.pipe(lambda df: display(df) or df)
.astype({'highway08': 'int8', 'city08': 'int16', 'comb08': 'int16', 'fuelCost08': 'int16',
'range': 'int16', 'year': 'int16', 'make': 'category'})
.drop(columns=['trany', 'eng_dscr'])
)
|
>
> .pipe
|
>
> .pipe Cmd + Shift + M
-Wes McKinney
“I wish we could do pipes in python, but
we don’t have nonstandard evaluation.”
df
|
>
group_by(col1)
|
>
summarize(mean(col2))
df
|
>
group_by(col1)
|
>
summarize(mean(col2))
postgres_con_as_df
|
>
group_by(col1)
|
>
summarize(mean(col2))
postgres_con_as_df
|
>
mutate(col1 = if(x > 100) 100 else x)
|
>
group_by(col1)
|
>
summarize(mean(col2))
postgres_con_as_df
|
>
mutate(col1 = if(x > 100) 100 else x)
|
>
group_by(col1)
|
>
summarize(mean(col2))
#> <SQL> CASE WHEN (`x` > 100) THEN 100 WHEN NOT (`x` > 100) THEN x END
df
|
>
group_by(col1)
|
>
summarize(mean(col2))
df
|
>
group_by(col1)
|
>
summarize(postgres_udf(col2))
df
|
>
group_by(col1)
|
>
summarize(postgres_udf(col2))
SELECT postgres_udf(col2)
FROM df
GROUP BY col1
How it works
df
|
>
filter(col1
=
=
1, col2
=
=
1)
df.query('col1
=
=
1 & col2
=
=
1')
df
<
-
data.frame(x = 1
:
10, y = 11
:
20, z = 21
:
30)
df$x + df$y + df$z
df
<
-
data.frame(x = 1
:
10, y = 11
:
20, z = 21
:
30)
df$x + df$y + df$z
=
=
with(df, x + y + z)
df
<
-
data.frame(x = 1
:
10, y = 11
:
20, z = 21
:
30)
df$x + df$y + df$z
=
=
with(df, x + y + z)
how many lines of code to
implement with?
with
<
-
function(data, expr) {
enquosure
<
-
enquo(expr)
eval_tidy(enquosure, data)
}
with
<
-
function(data, expr) {
enquosure
<
-
enquo(expr)
eval_tidy(enquosure, data)
}
-Hadley Wickam, Advanced R
“The name is a portmanteau of quoting and
closure, because a quosure both quotes the
expression and encloses the environment.”
-Hadley Wickam, Advanced R
“The name is a portmanteau of quoting and
closure, because a quosure both quotes the
expression and encloses the environment.”
Add 1 to x
vs
She said, “Add 1 to x”
Add 1 to x
vs
She said, “Add 1 to x”
x
<
-
42
x + 1
[1] 43
quote(x + 1)
x + 1
-Hadley Wickam, Advanced R
“The name is a portmanteau of quoting and
closure, because a quosure both quotes the
expression and encloses the environment.”
-Hadley Wickam, Advanced R
“The name is a portmanteau of quoting and
closure, because a quosure both quotes the
expression and encloses the environment.”
She said, “Add 1 to x”
…
Now, do what she said
Crap. I can’t. I forgot what x is
environments map
variables to values
She said, “Add 1 to x”
…
Now, do what she said
Its 43 because x was 42
with
<
-
function(data, expr) {
enquosure
<
-
enquo(expr)
eval_tidy(enquosure, data)
}
with
<
-
function(data, expr) {
enquosure
<
-
enquo(expr)
eval_tidy(enquosure, data)
}
with
<
-
function(data, expr) {
enquosure
<
-
enquo(expr)
eval_tidy(enquosure)
}
Now, do what she said
with
<
-
function(data, expr) {
enquosure
<
-
enquo(expr)
eval_tidy(enquosure, data)
}
Now, do what she said…
and add the vectors from this data
frame to the environment
df
<
-
data.frame(x = 1
:
10, y = 11
:
20, z = 21
:
30)
df$x + df$y + df$z
=
=
with(df, x + y + z)
with(df, x + y + z)
She said, “x + y + z”
Now, do what she
said, and add the
vectors from
df to the
environment
with
<
-
function(data, expr) {
enquosure
<
-
enquo(expr)
eval_tidy(enquosure, data)
}
postgres_con_as_df
|
>
mutate(col1 = if(x > 100) 100 else x)
|
>
group_by(col1)
|
>
summarize(mean(col2))
postgres_con_as_df
|
>
mutate(col1 = if(x > 100) 100 else x)
|
>
group_by(col1)
|
>
summarize(mean(col2))
#> <SQL> CASE WHEN (`x` > 100) THEN 100 WHEN NOT (`x` > 100) THEN x END
My meta programming journey
snowflake_df
|
>
mutate(col1 = ifelse(x > 100, 100, x))
|
>
collect()
snowflake_df
|
>
mutate(col1 = ifelse(x > 100, 100, x))
|
>
collect()
snowflake_df
|
>
count()
snowflake_df
|
>
mutate(col1 = ifelse(x > 100, 100, x))
|
>
collect()
snowflake_df
|
>
mutate(col1 = ifelse(x > 100, 100, x))
|
>
collect()
snowflake_df
|
>
mutate(col1 = ifelse(x > 100, 100, x))
|
>
collect()
Cmd + Shift + C
*bombshell insight*
bad joins
comparing small groups
bugs in mutation code
data quality issues
how can we use meta-
programming to make data
analysis faster and safer?
intro-to-metaprogramming-in-r.pdf
intro-to-metaprogramming-in-r.pdf

More Related Content

Similar to intro-to-metaprogramming-in-r.pdf

Data aggregation in R
Data aggregation in RData aggregation in R
Data aggregation in R
Andrija Djurovic
 
Regression_Sample
Regression_SampleRegression_Sample
Regression_Sample
Jie Huang
 
CLUSTERGRAM
CLUSTERGRAMCLUSTERGRAM
CLUSTERGRAM
Dr. Volkan OBAN
 
Python Puzzlers - 2016 Edition
Python Puzzlers - 2016 EditionPython Puzzlers - 2016 Edition
Python Puzzlers - 2016 Edition
Nandan Sawant
 
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
MongoSF
 
Introduction to R
Introduction to RIntroduction to R
Introduction to R
Sander Kieft
 
R + Hadoop = Big Data Analytics. How Revolution Analytics' RHadoop Project Al...
R + Hadoop = Big Data Analytics. How Revolution Analytics' RHadoop Project Al...R + Hadoop = Big Data Analytics. How Revolution Analytics' RHadoop Project Al...
R + Hadoop = Big Data Analytics. How Revolution Analytics' RHadoop Project Al...
Revolution Analytics
 
ggtimeseries-->ggplot2 extensions
ggtimeseries-->ggplot2 extensions ggtimeseries-->ggplot2 extensions
ggtimeseries-->ggplot2 extensions
Dr. Volkan OBAN
 
Advanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part IIAdvanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part II
Dr. Volkan OBAN
 
proj1v2
proj1v2proj1v2
Font classification with 5 deep learning models using tensor flow
Font classification with 5 deep learning models using tensor flowFont classification with 5 deep learning models using tensor flow
Font classification with 5 deep learning models using tensor flow
Devatanu Banerjee
 
Implement the following sorting algorithms Bubble Sort Insertion S.pdf
Implement the following sorting algorithms  Bubble Sort  Insertion S.pdfImplement the following sorting algorithms  Bubble Sort  Insertion S.pdf
Implement the following sorting algorithms Bubble Sort Insertion S.pdf
kesav24
 
MLHEP Lectures - day 3, basic track
MLHEP Lectures - day 3, basic trackMLHEP Lectures - day 3, basic track
MLHEP Lectures - day 3, basic track
arogozhnikov
 
Numerical methods generating polynomial
Numerical methods generating polynomialNumerical methods generating polynomial
Session 02
Session 02Session 02
Session 02
Felix Müller
 
Time Series Analysis and Mining with R
Time Series Analysis and Mining with RTime Series Analysis and Mining with R
Time Series Analysis and Mining with R
Yanchang Zhao
 
Python Cheat Sheet Presentation Learning
Python Cheat Sheet Presentation LearningPython Cheat Sheet Presentation Learning
Python Cheat Sheet Presentation Learning
Naseer-ul-Hassan Rehman
 
Deep Learning for AI (2)
Deep Learning for AI (2)Deep Learning for AI (2)
Deep Learning for AI (2)
Dongheon Lee
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
Databricks
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
Databricks
 

Similar to intro-to-metaprogramming-in-r.pdf (20)

Data aggregation in R
Data aggregation in RData aggregation in R
Data aggregation in R
 
Regression_Sample
Regression_SampleRegression_Sample
Regression_Sample
 
CLUSTERGRAM
CLUSTERGRAMCLUSTERGRAM
CLUSTERGRAM
 
Python Puzzlers - 2016 Edition
Python Puzzlers - 2016 EditionPython Puzzlers - 2016 Edition
Python Puzzlers - 2016 Edition
 
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
Map/reduce, geospatial indexing, and other cool features (Kristina Chodorow)
 
Introduction to R
Introduction to RIntroduction to R
Introduction to R
 
R + Hadoop = Big Data Analytics. How Revolution Analytics' RHadoop Project Al...
R + Hadoop = Big Data Analytics. How Revolution Analytics' RHadoop Project Al...R + Hadoop = Big Data Analytics. How Revolution Analytics' RHadoop Project Al...
R + Hadoop = Big Data Analytics. How Revolution Analytics' RHadoop Project Al...
 
ggtimeseries-->ggplot2 extensions
ggtimeseries-->ggplot2 extensions ggtimeseries-->ggplot2 extensions
ggtimeseries-->ggplot2 extensions
 
Advanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part IIAdvanced Data Visualization Examples with R-Part II
Advanced Data Visualization Examples with R-Part II
 
proj1v2
proj1v2proj1v2
proj1v2
 
Font classification with 5 deep learning models using tensor flow
Font classification with 5 deep learning models using tensor flowFont classification with 5 deep learning models using tensor flow
Font classification with 5 deep learning models using tensor flow
 
Implement the following sorting algorithms Bubble Sort Insertion S.pdf
Implement the following sorting algorithms  Bubble Sort  Insertion S.pdfImplement the following sorting algorithms  Bubble Sort  Insertion S.pdf
Implement the following sorting algorithms Bubble Sort Insertion S.pdf
 
MLHEP Lectures - day 3, basic track
MLHEP Lectures - day 3, basic trackMLHEP Lectures - day 3, basic track
MLHEP Lectures - day 3, basic track
 
Numerical methods generating polynomial
Numerical methods generating polynomialNumerical methods generating polynomial
Numerical methods generating polynomial
 
Session 02
Session 02Session 02
Session 02
 
Time Series Analysis and Mining with R
Time Series Analysis and Mining with RTime Series Analysis and Mining with R
Time Series Analysis and Mining with R
 
Python Cheat Sheet Presentation Learning
Python Cheat Sheet Presentation LearningPython Cheat Sheet Presentation Learning
Python Cheat Sheet Presentation Learning
 
Deep Learning for AI (2)
Deep Learning for AI (2)Deep Learning for AI (2)
Deep Learning for AI (2)
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 
User Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love StoryUser Defined Aggregation in Apache Spark: A Love Story
User Defined Aggregation in Apache Spark: A Love Story
 

More from K. Matthew Dupree

Intro To Gradient Descent in Javascript
Intro To Gradient Descent in JavascriptIntro To Gradient Descent in Javascript
Intro To Gradient Descent in Javascript
K. Matthew Dupree
 
Dagger 2, 2 years later
Dagger 2, 2 years laterDagger 2, 2 years later
Dagger 2, 2 years later
K. Matthew Dupree
 
An Introduction to RxJava
An Introduction to RxJavaAn Introduction to RxJava
An Introduction to RxJava
K. Matthew Dupree
 
If Android Tests Could Talk
If Android Tests Could TalkIf Android Tests Could Talk
If Android Tests Could Talk
K. Matthew Dupree
 
Writing testable android apps
Writing testable android appsWriting testable android apps
Writing testable android apps
K. Matthew Dupree
 
Di and Dagger
Di and DaggerDi and Dagger
Di and Dagger
K. Matthew Dupree
 
Functional Testing for React Native Apps
Functional Testing for React Native AppsFunctional Testing for React Native Apps
Functional Testing for React Native Apps
K. Matthew Dupree
 
Testable android apps
Testable android appsTestable android apps
Testable android apps
K. Matthew Dupree
 

More from K. Matthew Dupree (8)

Intro To Gradient Descent in Javascript
Intro To Gradient Descent in JavascriptIntro To Gradient Descent in Javascript
Intro To Gradient Descent in Javascript
 
Dagger 2, 2 years later
Dagger 2, 2 years laterDagger 2, 2 years later
Dagger 2, 2 years later
 
An Introduction to RxJava
An Introduction to RxJavaAn Introduction to RxJava
An Introduction to RxJava
 
If Android Tests Could Talk
If Android Tests Could TalkIf Android Tests Could Talk
If Android Tests Could Talk
 
Writing testable android apps
Writing testable android appsWriting testable android apps
Writing testable android apps
 
Di and Dagger
Di and DaggerDi and Dagger
Di and Dagger
 
Functional Testing for React Native Apps
Functional Testing for React Native AppsFunctional Testing for React Native Apps
Functional Testing for React Native Apps
 
Testable android apps
Testable android appsTestable android apps
Testable android apps
 

Recently uploaded

Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
Ayan Halder
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
Yara Milbes
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
Bert Jan Schrijver
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
brainerhub1
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
devvsandy
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
VALiNTRY360
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
Peter Muessig
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
Drona Infotech
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
Hornet Dynamics
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
sjcobrien
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Envertis Software Solutions
 

Recently uploaded (20)

Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
Requirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional SafetyRequirement Traceability in Xen Functional Safety
Requirement Traceability in Xen Functional Safety
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
SMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API ServiceSMS API Integration in Saudi Arabia| Best SMS API Service
SMS API Integration in Saudi Arabia| Best SMS API Service
 
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
J-Spring 2024 - Going serverless with Quarkus, GraalVM native images and AWS ...
 
Unveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdfUnveiling the Advantages of Agile Software Development.pdf
Unveiling the Advantages of Agile Software Development.pdf
 
Top 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptxTop 9 Trends in Cybersecurity for 2024.pptx
Top 9 Trends in Cybersecurity for 2024.pptx
 
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdfTop Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
Top Benefits of Using Salesforce Healthcare CRM for Patient Management.pdf
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling ExtensionsUI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
UI5con 2024 - Boost Your Development Experience with UI5 Tooling Extensions
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Mobile app Development Services | Drona Infotech
Mobile app Development Services  | Drona InfotechMobile app Development Services  | Drona Infotech
Mobile app Development Services | Drona Infotech
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
E-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet DynamicsE-commerce Development Services- Hornet Dynamics
E-commerce Development Services- Hornet Dynamics
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
Malibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed RoundMalibou Pitch Deck For Its €3M Seed Round
Malibou Pitch Deck For Its €3M Seed Round
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative AnalysisOdoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
Odoo ERP Vs. Traditional ERP Systems – A Comparative Analysis
 

intro-to-metaprogramming-in-r.pdf