SlideShare a Scribd company logo
1 of 53
Download to read offline
TypesAreEatingTheWorld!
AboutMyself
MynameisDaisukeShimamoto
Pronounced"Dice-K"
Twitter/Facebook/LinkedIn:@diskshima
Current:
EngineerManageratPROGRIT(aEnglish
coachingcompany)
PastExperience:
USInvestmentBank:Java&Spring,C#&.Net
Variousstart-ups:RubyonRails,React.js,React
Native,etc.
Me&Types
FascinatedbyTypesinprogramming.
Justfindtheminteresting.
IwriteHaskellasahobby.
Notusingittodaysopleasedon'trunaway
BeforeWeStart
WillbemainlyusingTypeScriptandSwiftinthistalk.
GoodsupportforTypes.
Notcovering/using
TypeTheory
Monads
Weirdgreeksymbols(ɑ,𝛽,𝛾,𝜎,𝜋,etc.)
Soagain,pleasedon'trunaway
KeyTakeaway:Typesarebecomingmoreimportant!
WhySo?
Softwareisbecoming:
Moreandmoreadvanced
Largerandlarger
Moreandmorecomplex
Whichleadsto...
Whichleadsto... MOREBUGS!!
Whatcanwedo?
Whatcanwedo?TYPES!!
StartwithBasics
BasicTypes
int
-1,0,1,2,3,...
float
0.1,0.25,0.3,...
char
'a','b','c',...
string
"hello","world",...
AdvancedTypes
FunctionTypes
number => string :Takesinanintandreturnsastring
const f: ((n: number) => string) = function (n) {

// Do something with n.

:

return "foo";

}

Generics(Java,C#,TypeScript,etc)
function firstElement<T>(arr: T[]): T {

return arr[0];

}
ButTypescandomore!
ButTypescandomore!
Let'slookatsomefairlynew/advancedTypes!
Optional
Indicatesthatthevaluecouldbe null .
You'veseenoneofthese,right?
java.lang.NullPointerException
TypeError: ‘undefined’ is not an object
Optionalspreventthis.
Example(Swift):
let num: Optional<Int> = function_that_may_return_nil()

if let a = num { // Take the Int inside Optional<Int>.

print(a)

} else {

print("Was nil")

}
Optional
Thecompilercancheckthatyou'veactuallyhandledthecaseof null .
Someexamplesinotherlanguages:
Java: Optional
C#: Nullable
Kotlin: Nullable
FunFactabout null
null wasfirstintroducedbyTonyHoare(famousComputerScientist).
Andhelaterreferredtoitasthebillion-dollarmistake
Icallitmybillion-dollarmistake.Itwastheinventionofthenullreferencein1965(in
ALGOLW).
Wikipedia
Async/Await,Future,Promise
Thesearetype(orlanguage)featureforhandlingasynchronousexecutions.
Example(TypeScript):
function delayedPrint(msg: string, delay: number): Promise<void> {

return new Promise((resolve, reject) => {

setTimeout(() => {

console.log(msg);
resolve();

}, delay);

});

}

async function main() {

console.log("Dispatching first delayedPrint.")

delayedPrint("Hello", 1000);

console.log("Dispatching second delayedPrint.")

await delayedPrint("Hello2", 1500);

console.log("This console.log will wait for the one above.")

delayedPrint("Hello3", 1000);

}

main();
Output:
Dispatching first delayedPrint.

Dispatching second delayedPrint.

Hello

Hello2

This console.log will wait the one above.

Hello3
Async/Await,Future,Promise
Intuitive
Comparedtothecallbackhell.
SupportedbyC#,TypeScript,Kotlin,etc.
BeingaddedtootherlanguageslikeSwift,C++.
Tellshowmuchengineerslovethisfeature
QuickSummarySoFar
Typesareeatingtheworld
Advancesinprogramminglanguagesarespeedinguplikecrazy.
Muchslowerintheolddays(RememberPerl6?C++0x)?)
TranspilerslikeBabelhashelpedalot.
ButTypescandoEVENMORE!
ButTypescandoEVENMORE!
Let'slookatsomemoreadvancedTypesthatwemayseeinthefuture.
1.AlgebraicDataTypes
1.AlgebraicDataTypes
Representsrelationshipsbetweendata.
Consistsoftwokinds:
SumType
Alsocalled"enum".
ThedatacouldbeoneofA,B,C...
ProductType
ThedatacanholdanelementofAandanelementofBandsoon.
Alsocalled"struct","record".
ExampleofSumType(inTypeScript)
interface A {

:

}

interface B {

:

}

type A_OR_B = A | B; // Meaning it can be either A or B
ExampleofProductTypeinSwift:
struct ProductExample {

let a: Bool

let b: Bool

}
UseCases
TypeScriptExample
interface Square {

kind: "square";

size: number;

}

interface Rectangle {

kind: "rectangle";

width: number;

height: number;

}

type Shape = Square | Rectangle; // Either a Square or a Rectangle.
TypeScriptExample(cont'd)
function non_exhaustive(s: Shape) {

switch (s.kind) {

case "square":

return s.size * s.size;

default:

const _tmp: never = s

// ^^^^ This is a compile time error!

}

return 0;

}

function not_in_part_of_the_type(s: Shape) {

switch (s.kind) {

case "square": return s.size * s.size;

case "rectangle": return s.height * s.width;

case "circle": return s.height;

// ^^^^^^^^ This is a compile time error!

}

}
Obvious?Yes.
Somelanguagesdonotnotsupportthisorhavenotfullysupportedthem.
PHPProposal:PHP:rfc:adts
Kotlin:Supportsealed(exhaustive)whens
Compiletimecheckofexhaustivenessofsumtypes.
Why"Algebraic"?
Somethingtodowithmathbutwon'tgodeepertoday.
Irecommendreading:
Thealgebra(andcalculus!)ofalgebraicdatatypes
2.DependentTypes
DependentTypes
AllTypessofar
MakeacleardistinctionbetweenTypesandValues
Valuesdependontheirtypes
const num: int = 1; // <-- 1 depends on int.

const str: string = "hello"; // <-- "hello" depends on string.
Canwenotflipthis?
i.e.haveTypesdependonValues?
What??
Let'sstartwithaproblemwewanttosolve.
Problem:"Functionthatexpectsevennumbers"
Problem:"Functionthatexpectsevennumbers"
NormalTypeScript:
function f(n: int) {
if (n % 2 != 0) {

throw "n is not even!"

} else {

// n is even.

// Do something with n.

:

}

}

f(1) // Compiler will be happy but will definitely THROW!
IntroducingDependentTypes
DependentTypesallowyoutousevaluesinthetypes.
// This is made-up syntax. Doesn't actually work!

function f(n: { int | n % 2 == 0 }) {

// ^^^^^^^^^^ Compile time check!

:

}

f(1) // Compiler will error!
DependentTypes
EncodesmorelogicintotheType.
Morecompiletimechecks!
ByauseronStackoverflow:
Dependenttypesenablelargersetoflogicerrorstobeeliminatedatcompile
time.
DependentTypes
Notmuchsupportyet
Onlyafewlanguagessupportit:
Agda
Idris
Let'sseeifmainstreamlanguagesadoptit
3.LinearTypes
3.LinearTypes
Againlet'sstartwiththeproblem.
Problem:"Howcanwepreventuseofvariableswhen
theyshouldnotbeused?"
Problem:"Howcanwepreventuseofvariableswhen
theyshouldnotbeused?"
Examples:
Useafter free .
Double free .
Accessingaclosedfilehandler.
IntroducingLinearTypes
LinearTypesmustbeusedonceandonlyonce.
Thekeyismustandonce.
UseCases#1
Linearresources
Files,networksockets,etc.
// Again made-up syntax. Does not actually work.

linearfunc readFile(filepath: string): string {

const fileHandle = open(filepath);

const content = readFile(fileHandle);

return content;

// Oops! Forgot to close `fileHandle`! 

// Compiler can automatically emit, operation to close the handle.

}
UseCase#2
Performance
Ifyouknowitwon'tbeused,youcanoptimizeit.
// Again made-up syntax. TypeScript does not have this!

linearfunc f(str: string): string {

const str2 = str + "aaaaaa"; // Plain TypeScript will allocate a new memory for this.

return str2; // <- The compiler can make a decision and overwrite str in memory for performance!

}
Summary
SomerecentTypesseeninmainstreamlanguages.
Optional
Await/Async,Future,Promise
MoreAdvancedTypes
AlgebraicDataTypes
DependentTypes
LinearTypes
Thanks!
Attributions
HaskellIcon:https://icon-icons.com/icon/file-type-haskell/130552
SwiftIcon:https://icon-icons.com/icon/swift-original-logo/146332
TypeScriptIcon:https://icon-icons.com/icon/file-type-typescript-official/130107

More Related Content

Similar to Types are eating the world

Future of Ruby on the Web
Future of Ruby on the WebFuture of Ruby on the Web
Future of Ruby on the WebFuture Insights
 
Managing JavaScript Complexity
Managing JavaScript ComplexityManaging JavaScript Complexity
Managing JavaScript ComplexityJarrod Overson
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponLaurent Duveau
 
OWASP PHPIDS talk slides
OWASP PHPIDS talk slidesOWASP PHPIDS talk slides
OWASP PHPIDS talk slidesguestd34230
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponLaurent Duveau
 
Beyond the Style Guides
Beyond the Style GuidesBeyond the Style Guides
Beyond the Style GuidesMosky Liu
 
Grooming with Groovy
Grooming with GroovyGrooming with Groovy
Grooming with GroovyDhaval Dalal
 
RubyConf Portugal 2014 - Why ruby must go!
RubyConf Portugal 2014 - Why ruby must go!RubyConf Portugal 2014 - Why ruby must go!
RubyConf Portugal 2014 - Why ruby must go!Gautam Rege
 
Migrating Web SDK from JS to TS
Migrating Web SDK from JS to TSMigrating Web SDK from JS to TS
Migrating Web SDK from JS to TSGrigory Petrov
 
Basics of Javascript
Basics of JavascriptBasics of Javascript
Basics of JavascriptUniverse41
 
TechDays - IronRuby
TechDays - IronRubyTechDays - IronRuby
TechDays - IronRubyBen Hall
 
Compiler2016 by abcdabcd987
Compiler2016 by abcdabcd987Compiler2016 by abcdabcd987
Compiler2016 by abcdabcd987乐群 陈
 
Static types on javascript?! Type checking approaches to ensure healthy appli...
Static types on javascript?! Type checking approaches to ensure healthy appli...Static types on javascript?! Type checking approaches to ensure healthy appli...
Static types on javascript?! Type checking approaches to ensure healthy appli...Arthur Puthin
 
Lagergren jvmls-2013-final
Lagergren jvmls-2013-finalLagergren jvmls-2013-final
Lagergren jvmls-2013-finalMarcus Lagergren
 
Complete Notes on Angular 2 and TypeScript
Complete Notes on Angular 2 and TypeScriptComplete Notes on Angular 2 and TypeScript
Complete Notes on Angular 2 and TypeScriptEPAM Systems
 
Ruby for .NET developers
Ruby for .NET developersRuby for .NET developers
Ruby for .NET developersMax Titov
 
Dear compiler please don't be my nanny v2
Dear compiler  please don't be my nanny v2Dear compiler  please don't be my nanny v2
Dear compiler please don't be my nanny v2Dino Dini
 

Similar to Types are eating the world (20)

Future of Ruby on the Web
Future of Ruby on the WebFuture of Ruby on the Web
Future of Ruby on the Web
 
Managing JavaScript Complexity
Managing JavaScript ComplexityManaging JavaScript Complexity
Managing JavaScript Complexity
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret Weapon
 
Sorbet at Grailed
Sorbet at GrailedSorbet at Grailed
Sorbet at Grailed
 
OWASP PHPIDS talk slides
OWASP PHPIDS talk slidesOWASP PHPIDS talk slides
OWASP PHPIDS talk slides
 
DSLs in JavaScript
DSLs in JavaScriptDSLs in JavaScript
DSLs in JavaScript
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret Weapon
 
Beyond the Style Guides
Beyond the Style GuidesBeyond the Style Guides
Beyond the Style Guides
 
Grooming with Groovy
Grooming with GroovyGrooming with Groovy
Grooming with Groovy
 
RubyConf Portugal 2014 - Why ruby must go!
RubyConf Portugal 2014 - Why ruby must go!RubyConf Portugal 2014 - Why ruby must go!
RubyConf Portugal 2014 - Why ruby must go!
 
Goodparts
GoodpartsGoodparts
Goodparts
 
Migrating Web SDK from JS to TS
Migrating Web SDK from JS to TSMigrating Web SDK from JS to TS
Migrating Web SDK from JS to TS
 
Basics of Javascript
Basics of JavascriptBasics of Javascript
Basics of Javascript
 
TechDays - IronRuby
TechDays - IronRubyTechDays - IronRuby
TechDays - IronRuby
 
Compiler2016 by abcdabcd987
Compiler2016 by abcdabcd987Compiler2016 by abcdabcd987
Compiler2016 by abcdabcd987
 
Static types on javascript?! Type checking approaches to ensure healthy appli...
Static types on javascript?! Type checking approaches to ensure healthy appli...Static types on javascript?! Type checking approaches to ensure healthy appli...
Static types on javascript?! Type checking approaches to ensure healthy appli...
 
Lagergren jvmls-2013-final
Lagergren jvmls-2013-finalLagergren jvmls-2013-final
Lagergren jvmls-2013-final
 
Complete Notes on Angular 2 and TypeScript
Complete Notes on Angular 2 and TypeScriptComplete Notes on Angular 2 and TypeScript
Complete Notes on Angular 2 and TypeScript
 
Ruby for .NET developers
Ruby for .NET developersRuby for .NET developers
Ruby for .NET developers
 
Dear compiler please don't be my nanny v2
Dear compiler  please don't be my nanny v2Dear compiler  please don't be my nanny v2
Dear compiler please don't be my nanny v2
 

More from Fangda Wang

[WWCode] How aware are you of your deciding model?
[WWCode] How aware are you of your deciding model?[WWCode] How aware are you of your deciding model?
[WWCode] How aware are you of your deciding model?Fangda Wang
 
Under the hood of architecture interviews at indeed
Under the hood of architecture interviews at indeedUnder the hood of architecture interviews at indeed
Under the hood of architecture interviews at indeedFangda Wang
 
How Indeed asks coding interview questions
How Indeed asks coding interview questionsHow Indeed asks coding interview questions
How Indeed asks coding interview questionsFangda Wang
 
From ic to tech lead
From ic to tech leadFrom ic to tech lead
From ic to tech leadFangda Wang
 
Introduction to japanese tokenizer
Introduction to japanese tokenizerIntroduction to japanese tokenizer
Introduction to japanese tokenizerFangda Wang
 
Gentle Introduction to Scala
Gentle Introduction to ScalaGentle Introduction to Scala
Gentle Introduction to ScalaFangda Wang
 
To pair or not to pair
To pair or not to pairTo pair or not to pair
To pair or not to pairFangda Wang
 
Functional programming and Elm
Functional programming and ElmFunctional programming and Elm
Functional programming and ElmFangda Wang
 
Elm at large (companies)
Elm at large (companies)Elm at large (companies)
Elm at large (companies)Fangda Wang
 
Data science tools of the trade
Data science tools of the tradeData science tools of the trade
Data science tools of the tradeFangda Wang
 

More from Fangda Wang (11)

[WWCode] How aware are you of your deciding model?
[WWCode] How aware are you of your deciding model?[WWCode] How aware are you of your deciding model?
[WWCode] How aware are you of your deciding model?
 
Under the hood of architecture interviews at indeed
Under the hood of architecture interviews at indeedUnder the hood of architecture interviews at indeed
Under the hood of architecture interviews at indeed
 
How Indeed asks coding interview questions
How Indeed asks coding interview questionsHow Indeed asks coding interview questions
How Indeed asks coding interview questions
 
From ic to tech lead
From ic to tech leadFrom ic to tech lead
From ic to tech lead
 
Introduction to japanese tokenizer
Introduction to japanese tokenizerIntroduction to japanese tokenizer
Introduction to japanese tokenizer
 
Gentle Introduction to Scala
Gentle Introduction to ScalaGentle Introduction to Scala
Gentle Introduction to Scala
 
To pair or not to pair
To pair or not to pairTo pair or not to pair
To pair or not to pair
 
Balanced Team
Balanced TeamBalanced Team
Balanced Team
 
Functional programming and Elm
Functional programming and ElmFunctional programming and Elm
Functional programming and Elm
 
Elm at large (companies)
Elm at large (companies)Elm at large (companies)
Elm at large (companies)
 
Data science tools of the trade
Data science tools of the tradeData science tools of the trade
Data science tools of the trade
 

Recently uploaded

Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startQuintin Balsdon
 
Unit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfUnit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfRagavanV2
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...SUHANI PANDEY
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptMsecMca
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...Call Girls in Nagpur High Profile
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...tanu pandey
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueBhangaleSonal
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxJuliansyahHarahap1
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfKamal Acharya
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdfSuman Jyoti
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringmulugeta48
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performancesivaprakash250
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapRishantSharmaFr
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Standamitlee9823
 
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoorTop Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoordharasingh5698
 

Recently uploaded (20)

Design For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the startDesign For Accessibility: Getting it right from the start
Design For Accessibility: Getting it right from the start
 
Unit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdfUnit 2- Effective stress & Permeability.pdf
Unit 2- Effective stress & Permeability.pdf
 
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
VIP Model Call Girls Kothrud ( Pune ) Call ON 8005736733 Starting From 5K to ...
 
notes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.pptnotes on Evolution Of Analytic Scalability.ppt
notes on Evolution Of Analytic Scalability.ppt
 
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...Booking open Available Pune Call Girls Pargaon  6297143586 Call Hot Indian Gi...
Booking open Available Pune Call Girls Pargaon 6297143586 Call Hot Indian Gi...
 
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...Bhosari ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready For ...
Bhosari ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready For ...
 
Double Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torqueDouble Revolving field theory-how the rotor develops torque
Double Revolving field theory-how the rotor develops torque
 
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
(INDIRA) Call Girl Meerut Call Now 8617697112 Meerut Escorts 24x7
 
Work-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptxWork-Permit-Receiver-in-Saudi-Aramco.pptx
Work-Permit-Receiver-in-Saudi-Aramco.pptx
 
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdfONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
ONLINE FOOD ORDER SYSTEM PROJECT REPORT.pdf
 
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar  ≼🔝 Delhi door step de...
Call Now ≽ 9953056974 ≼🔝 Call Girls In New Ashok Nagar ≼🔝 Delhi door step de...
 
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank  Design by Working Stress - IS Method.pdfIntze Overhead Water Tank  Design by Working Stress - IS Method.pdf
Intze Overhead Water Tank Design by Working Stress - IS Method.pdf
 
Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024Water Industry Process Automation & Control Monthly - April 2024
Water Industry Process Automation & Control Monthly - April 2024
 
chapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineeringchapter 5.pptx: drainage and irrigation engineering
chapter 5.pptx: drainage and irrigation engineering
 
UNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its PerformanceUNIT - IV - Air Compressors and its Performance
UNIT - IV - Air Compressors and its Performance
 
Unleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leapUnleashing the Power of the SORA AI lastest leap
Unleashing the Power of the SORA AI lastest leap
 
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
(INDIRA) Call Girl Bhosari Call Now 8617697112 Bhosari Escorts 24x7
 
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bangalore ☎ 7737669865 🥵 Book Your One night Stand
 
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoorTop Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
Top Rated Call Girls In chittoor 📱 {7001035870} VIP Escorts chittoor
 
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
(INDIRA) Call Girl Aurangabad Call Now 8617697112 Aurangabad Escorts 24x7
 

Types are eating the world