SlideShare a Scribd company logo
Grigory Petrov
Migrating Web SDK from JS to TS
Voximplant
AmsterdamJS, Amsterdam
June 8, 2017
https://twitter.com/grigoryvp
What's next?
Speaker Grigory Petrov
Specialization Team Lead
Full-time job Technology Evangelist
Experience in IT More than 15 years
Talk time 30 minutes
Questions After the talk, 5 minutes
2
What was migrated?
- Web SDK for cloud-based telephony
solutions
What was migrated?
- Web SDK for cloud-based telephony
solutions
- 13 KLOC, 250 kB
What was migrated?
- Web SDK for cloud-based telephony
solutions
- 13 KLOC, 250 kB
- Not a huge deal, yep? :)
What was migrated?
- Web SDK for cloud-based telephony
solutions
- 13 KLOC, 250 kB
- Not a huge deal, yep? :)
- Until the dreaded WebRTC creeps in...
Migrating Web SDK from JS to TS
Software Complexity Problem
We want to write code for our ideas.
Not the code for JavaScript.
Migration target
Migration target
TypeScript
Migration target
TypeScript
- Created by Microsoft 4 years ago
Migration target
TypeScript
- Created by Microsoft 4 years ago
- Created by the author of Delphi and C#
Migration target
TypeScript
- Created by Microsoft 4 years ago
- Created by the author of Delphi and C#
- Backward compatible with JavaScript
Migration target
TypeScript
- Created by Microsoft 4 years ago
- Created by the author of Delphi and C#
- Backward compatible with JavaScript
- NPM-based toolchain
Migration target
TypeScript
- Created by Microsoft 4 years ago
- Created by the author of Delphi and C#
- Backward compatible with JavaScript
- NPMYarn-based toolchain
Migration target
TypeScript
- Created by Microsoft 4 years ago
- Created by the author of Delphi and C#
- Backward compatible with JavaScript
- NPMYarn-based toolchain
- Adds ES6, ES7 ...
Migration target
TypeScript
- Created by Microsoft 4 years ago
- Created by the author of Delphi and C#
- Backward compatible with JavaScript
- NPMYarn-based toolchain
- Adds ES6, ES7 ES2016 ...
Migration target
TypeScript
- Created by Microsoft 4 years ago
- Created by the author of Delphi and C#
- Backward compatible with JavaScript
- NPMYarn-based toolchain
- Adds ES6, ES7 ES2016 ... and types!
Why TypeScript?
We already have:
● ES6/7/Babel
● Dart
● Flow
● Elm
● Emscripten
● CoffeeScript, after all! :)
TypeScript
Because it's from Microsoft :)
TypeScript
Because it's from Microsoft :)
TypeScript
Because it's from Microsoft :)
Because TS is actually JS
TypeScript
Because it's from Microsoft :)
Because TS is actually JS
And async
TypeScript
Because it's from Microsoft :)
Because TS is actually JS
And async
And decorators
TypeScript
Because it's from Microsoft :)
Because TS is actually JS
And async
And decorators
And interfaces
TypeScript
Because it's from Microsoft :)
Because TS is actually JS
And async
And decorators
And interfaces
And types
Types: a trap for errors
Types: a trap for errors
The main purpose of a type system is to reduce
possibilities for bugs in computer programs.
- Wikipedia
How traps work
Without a trap:
function addUser(name) { …
// somewhere in a distant place
addUser(user.name)
With a trap:
function addUser(name: string) { …
// somewhere in a distant place
addUser(user.name)
Half a year later:
// refactoring victim
addUser(id)
Half a year later:
// type check trap sprung
addUser(id)
Without a trap:
function addUser(name) { …
// somewhere in a distant place
addUser(user.name)
With a trap:
function addUser(name: string) { …
// somewhere in a distant place
addUser(user.name)
Half a year later:
// refactoring victim
addUser(id)
Half a year later:
// type check trap sprung
addUser(id)
Types pros and cons
Dynamic typing
- Development speed
- Traps spring in the future
- Trap may not be placed
automatically
Static typing
- Development speed
- Requires more thinking
- Traps spring instantly
Types cons and pros
TypeScript: gradual typing
Dynamic typing
- Development speed
- Traps spring in the future
- Trap may not be placed
automatically
Static typing
- Development speed
- Requires more thinking
- Traps spring instantly
Types cons and pros
TypeScript: gradual typing
- Add types only where you need them
Dynamic typing
- Development speed
- Traps spring in the future
- Trap may not be placed
automatically
Static typing
- Development speed
- Requires more thinking
- Traps spring instantly
Types cons and pros
TypeScript: gradual typing
- Add types only where you need them
- Fast prototyping and code modifications
Dynamic typing
- Development speed
- Traps spring in the future
- Trap may not be placed
automatically
Static typing
- Development speed
- Requires more thinking
- Traps spring instantly
Types cons and pros
TypeScript: gradual typing
- Add types only where you need them
- Fast prototyping and code modifications
- Protect the code only after it was stabilized
Dynamic typing
- Development speed
- Traps spring in the future
- Trap may not be placed
automatically
Static typing
- Development speed
- Requires more thinking
- Traps spring instantly
How we use types at Voximplant
Keep track of method contracts
How we use types at Voximplant
Keep track of method contracts
Insurance for WebRTC changes
What about clients?
Clients enjoy plain JavaScript
TypeScript ES2015 ES5
class Foo {
bar = () => {
console.log(this);
}
}
class Foo {
constructor() {
this.bar = () => {
console.log(this);
};
}
}
var Foo = (function () {
function Foo() {
var _this = this;
this.bar = function () {
console.log(_this);
};
}
return Foo;
}());
What about clients?
Even classes go fine *
TypeScript ES2015 ES5
class Foo {
bar = () => {
console.log(this);
}
}
class Foo {
constructor() {
this.bar = () => {
console.log(this);
};
}
}
var Foo = (function () {
function Foo() {
var _this = this;
this.bar = function () {
console.log(_this);
};
}
return Foo;
}());
* Unless something strange is used
But it compiles...
But it compiles...
What will happen to stack traces?
But it compiles...
What will happen to stack traces?
Everything will be fine
But it compiles...
What will happen to stack traces?
Everything will be fine
We have source maps
But it compiles...
What will happen to stack traces?
Everything will be fine
We have source maps
Resulting JavaScript is perfectly readable
What about the legacy like jQuery?
What about the legacy like jQuery?
Backward compatibility with JavaScript
What about the legacy like jQuery?
Backward compatibility with JavaScript
And types if you download them
Will it be fat and slow?
Will it be fat and slow?
Nope, plain JavaScript remains the same
Will it be fat and slow?
Nope, plain JavaScript remains the same
Extensions are compiled properly
What about Creative JavaScript?
What about Creative JavaScript?
We have that function-enum-object!
What about Сreative JavaScript?
We have that function-enum-object!
In that case, we need to use the ‘any’ keyword
Gradual transition to TS?
Gradual transition to TS?
We can compile both JS and TS input
Gradual transition to TS?
We can compile both JS and TS input
Type inference is always enabled
Gradual transition to TS?
We can compile both JS and TS input
Type inference is always enabled
Countless errors if you rename .js to .ts
Toolchain?
yarn init .
yarn install typescript
./node_modules/.bin/tsc entrypoint.ts
Are we talking about ‘entrypoint’?
- Yes, ESM modules
- Output is ESM/CJS/AMD/UMD/SystemJS
Where to get types?
"dependencies": {
"@types/jquery": "^2.0.41",
"jquery": "^2.0.41",
And if no types are available?
declare var $;
How about a build system?
How about a build system?
Any will do
How about a build system?
Any will do
Angular 2 does not use any (plain tsc)
How about a build system?
Any will do
Angular 2 does not use any (plain tsc)
We use Webpack
Continuous integration?
Continuous integration?
One word: npm
Continuous integration?
One word: npm
We use Gitlab CI
Testing?
@suite("mocha-typescript")
class Basic {
@test("should pass on assert")
asserts_pass() {
Testing?
@suite("mocha-typescript")
class Basic {
@test("should pass on assert")
asserts_pass() {
We use ‘intern’, it provides good WebDriver
support
Migrating Web SDK from JS to TS
Best things in practice
Best things in practice
Gradual typing
Best things in practice
Gradual typing
Fast experiments
Best things in practice
Gradual typing
Fast experiments
Types are introduced gradually
Compilation errors
Like in C++ 20 years ago:
Cannot find name 'foo'
Cannot find module 'foo'
Property 'bar' does not exist on type 'foo'
You need skilled developers
Otherwise the development becomes painful
Migrating Web SDK from JS to TS
Traps for errors
TypeScript pros and cons
Traps for errors
All new things from the JS world
TypeScript pros and cons
Traps for errors
All new things from the JS world
Gradual transition is possible
TypeScript pros and cons
Traps for errors
All new things from the JS world
Gradual transition is possible
Supported by Microsoft
TypeScript pros and cons
Traps for errors
All new things from the JS world
Gradual transition is possible
Supported by Microsoft
npm ecosystem
TypeScript pros and cons
Traps for errors
All new things from the JS world
Gradual transition is possible
Supported by Microsoft
npm ecosystem
Traps need to be placed manually
TypeScript pros and cons
Traps for errors
All new things from the JS world
Gradual transition is possible
Supported by Microsoft
npm ecosystem
Traps need to be placed manually
Error messages from hell
TypeScript pros and cons
Traps for errors
All new things from the JS world
Gradual transition is possible
Supported by Microsoft
npm ecosystem
Traps need to be placed manually
Error messages from hell
You need strong developers
TypeScript pros and cons
Traps for errors
All new things from the JS world
Gradual transition is possible
Supported by Microsoft
npm ecosystem
Traps need to be placed manually
Error messages from hell
You need strong developers
Not everything can be migrated well
TypeScript pros and cons
Traps for errors
All new things from the JS world
Gradual transition is possible
Supported by Microsoft
npm ecosystem
Traps need to be placed manually
Error messages from hell
You need strong developers
Not everything can be migrated well
Not everything has ready-made types
TypeScript pros and cons
Migrating Web SDK from JS to TS
Lessons learned by Voximplant
Lessons learned by Voximplant
- Contracts, interfaces, traps
Lessons learned by Voximplant
- Contracts, interfaces, traps
- 3 man-months
Lessons learned by Voximplant
- Contracts, interfaces, traps
- 3 man-months
- 250 kB → 800 kB
Lessons learned by Voximplant
- Contracts, interfaces, traps
- 3 man-months
- 250 kB → 800 kB
- 12 KLOC → 20 KLOC
That's all!
Questions?
Grigory Petrov
grigory.v.p@gmail.com
https://twitter.com/grigoryvp
https://facebook.com/grigoryvp
96

More Related Content

Similar to Migrating Web SDK from JS to TS (20)

TypeScript
TypeScriptTypeScript
TypeScript
Saray Chak
 
[DevDay2018] Javascript on the Rise - By Trang Tran, Co-founder & Manager at ...
[DevDay2018] Javascript on the Rise - By Trang Tran, Co-founder & Manager at ...[DevDay2018] Javascript on the Rise - By Trang Tran, Co-founder & Manager at ...
[DevDay2018] Javascript on the Rise - By Trang Tran, Co-founder & Manager at ...
DevDay Da Nang
 
An Introduction to TypeScript
An Introduction to TypeScriptAn Introduction to TypeScript
An Introduction to TypeScript
WrapPixel
 
Introjs10.5.17SD
Introjs10.5.17SDIntrojs10.5.17SD
Introjs10.5.17SD
Thinkful
 
Scaling Machine Learning Systems up to Billions of Predictions per Day
Scaling Machine Learning Systems up to Billions of Predictions per DayScaling Machine Learning Systems up to Billions of Predictions per Day
Scaling Machine Learning Systems up to Billions of Predictions per Day
Carmine Paolino
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
ZeroTurnaround
 
Overboard.js - where are we going with with jsconfasia / devfestasia
Overboard.js - where are we going with with jsconfasia / devfestasiaOverboard.js - where are we going with with jsconfasia / devfestasia
Overboard.js - where are we going with with jsconfasia / devfestasia
Christian Heilmann
 
Progressive Enhancement & Intentional Degradation 2
Progressive Enhancement & Intentional Degradation 2Progressive Enhancement & Intentional Degradation 2
Progressive Enhancement & Intentional Degradation 2
elliotjaystocks
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
Alessandro Cinelli (cirpo)
 
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
Codemotion
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret Weapon
Laurent Duveau
 
Back to the future: Isomorphic javascript applications
Back to the future:  Isomorphic javascript applicationsBack to the future:  Isomorphic javascript applications
Back to the future: Isomorphic javascript applications
Luciano Colosio
 
Javascript leverage: Isomorphic Applications by Luciano Colosio at Codemotion...
Javascript leverage: Isomorphic Applications by Luciano Colosio at Codemotion...Javascript leverage: Isomorphic Applications by Luciano Colosio at Codemotion...
Javascript leverage: Isomorphic Applications by Luciano Colosio at Codemotion...
Codemotion Dubai
 
Type script vs javascript come face to face in battleground
Type script vs javascript come face to face in battlegroundType script vs javascript come face to face in battleground
Type script vs javascript come face to face in battleground
Katy Slemon
 
Notes (2012-06-08)
Notes (2012-06-08)Notes (2012-06-08)
Notes (2012-06-08)
Chris Pitt
 
A Gentle introduction to Web Development & Django
A Gentle introduction to Web Development & DjangoA Gentle introduction to Web Development & Django
A Gentle introduction to Web Development & Django
PRASANNAVENK
 
"Generating Types without climbing a tree", Matteo Collina
"Generating Types without climbing a tree", Matteo Collina "Generating Types without climbing a tree", Matteo Collina
"Generating Types without climbing a tree", Matteo Collina
Fwdays
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret Weapon
Laurent Duveau
 
TypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack DevelopersTypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack Developers
Rutenis Turcinas
 
Ruby in the Browser - RubyConf 2011
Ruby in the Browser - RubyConf 2011Ruby in the Browser - RubyConf 2011
Ruby in the Browser - RubyConf 2011
Ilya Grigorik
 
[DevDay2018] Javascript on the Rise - By Trang Tran, Co-founder & Manager at ...
[DevDay2018] Javascript on the Rise - By Trang Tran, Co-founder & Manager at ...[DevDay2018] Javascript on the Rise - By Trang Tran, Co-founder & Manager at ...
[DevDay2018] Javascript on the Rise - By Trang Tran, Co-founder & Manager at ...
DevDay Da Nang
 
An Introduction to TypeScript
An Introduction to TypeScriptAn Introduction to TypeScript
An Introduction to TypeScript
WrapPixel
 
Introjs10.5.17SD
Introjs10.5.17SDIntrojs10.5.17SD
Introjs10.5.17SD
Thinkful
 
Scaling Machine Learning Systems up to Billions of Predictions per Day
Scaling Machine Learning Systems up to Billions of Predictions per DayScaling Machine Learning Systems up to Billions of Predictions per Day
Scaling Machine Learning Systems up to Billions of Predictions per Day
Carmine Paolino
 
How To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven PetersHow To Do Kick-Ass Software Development, by Sven Peters
How To Do Kick-Ass Software Development, by Sven Peters
ZeroTurnaround
 
Overboard.js - where are we going with with jsconfasia / devfestasia
Overboard.js - where are we going with with jsconfasia / devfestasiaOverboard.js - where are we going with with jsconfasia / devfestasia
Overboard.js - where are we going with with jsconfasia / devfestasia
Christian Heilmann
 
Progressive Enhancement & Intentional Degradation 2
Progressive Enhancement & Intentional Degradation 2Progressive Enhancement & Intentional Degradation 2
Progressive Enhancement & Intentional Degradation 2
elliotjaystocks
 
PHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the foolPHP is the King, nodejs the prince and python the fool
PHP is the King, nodejs the prince and python the fool
Alessandro Cinelli (cirpo)
 
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...
Codemotion
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret Weapon
Laurent Duveau
 
Back to the future: Isomorphic javascript applications
Back to the future:  Isomorphic javascript applicationsBack to the future:  Isomorphic javascript applications
Back to the future: Isomorphic javascript applications
Luciano Colosio
 
Javascript leverage: Isomorphic Applications by Luciano Colosio at Codemotion...
Javascript leverage: Isomorphic Applications by Luciano Colosio at Codemotion...Javascript leverage: Isomorphic Applications by Luciano Colosio at Codemotion...
Javascript leverage: Isomorphic Applications by Luciano Colosio at Codemotion...
Codemotion Dubai
 
Type script vs javascript come face to face in battleground
Type script vs javascript come face to face in battlegroundType script vs javascript come face to face in battleground
Type script vs javascript come face to face in battleground
Katy Slemon
 
Notes (2012-06-08)
Notes (2012-06-08)Notes (2012-06-08)
Notes (2012-06-08)
Chris Pitt
 
A Gentle introduction to Web Development & Django
A Gentle introduction to Web Development & DjangoA Gentle introduction to Web Development & Django
A Gentle introduction to Web Development & Django
PRASANNAVENK
 
"Generating Types without climbing a tree", Matteo Collina
"Generating Types without climbing a tree", Matteo Collina "Generating Types without climbing a tree", Matteo Collina
"Generating Types without climbing a tree", Matteo Collina
Fwdays
 
TypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret WeaponTypeScript: Angular's Secret Weapon
TypeScript: Angular's Secret Weapon
Laurent Duveau
 
TypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack DevelopersTypeScript - Silver Bullet for the Full-stack Developers
TypeScript - Silver Bullet for the Full-stack Developers
Rutenis Turcinas
 
Ruby in the Browser - RubyConf 2011
Ruby in the Browser - RubyConf 2011Ruby in the Browser - RubyConf 2011
Ruby in the Browser - RubyConf 2011
Ilya Grigorik
 

Recently uploaded (20)

FME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable InsightsFME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable Insights
Safe Software
 
Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!
PhilMeredith3
 
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlowDevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
Aarno Aukia
 
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdfTop 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Trackobit
 
Rebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core FoundationRebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core Foundation
Cadabra Studio
 
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentricIntegration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Natan Silnitsky
 
Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...
Rishab Acharya
 
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptxIMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
usmanch7829
 
FME as an Orchestration Tool - Peak of Data & AI 2025
FME as an Orchestration Tool - Peak of Data & AI 2025FME as an Orchestration Tool - Peak of Data & AI 2025
FME as an Orchestration Tool - Peak of Data & AI 2025
Safe Software
 
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
BradBedford3
 
Essentials of Resource Planning in a Downturn
Essentials of Resource Planning in a DownturnEssentials of Resource Planning in a Downturn
Essentials of Resource Planning in a Downturn
OnePlan Solutions
 
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
WSO2
 
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdfThe Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
Varsha Nayak
 
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdfHow to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
QuickBooks Training
 
Leveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer IntentsLeveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer Intents
Keheliya Gallaba
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - IntroductionIBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps CyclesFrom Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
Marjukka Niinioja
 
Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3
Gaurav Sharma
 
Generative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its ApplicationsGenerative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its Applications
SandeepKS52
 
Top 5 Task Management Software to Boost Productivity in 2025
Top 5 Task Management Software to Boost Productivity in 2025Top 5 Task Management Software to Boost Productivity in 2025
Top 5 Task Management Software to Boost Productivity in 2025
Orangescrum
 
FME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable InsightsFME for Climate Data: Turning Big Data into Actionable Insights
FME for Climate Data: Turning Big Data into Actionable Insights
Safe Software
 
Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!Build enterprise-ready applications using skills you already have!
Build enterprise-ready applications using skills you already have!
PhilMeredith3
 
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlowDevOps for AI: running LLMs in production with Kubernetes and KubeFlow
DevOps for AI: running LLMs in production with Kubernetes and KubeFlow
Aarno Aukia
 
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdfTop 11 Fleet Management Software Providers in 2025 (2).pdf
Top 11 Fleet Management Software Providers in 2025 (2).pdf
Trackobit
 
Rebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core FoundationRebuilding Cadabra Studio: AI as Our Core Foundation
Rebuilding Cadabra Studio: AI as Our Core Foundation
Cadabra Studio
 
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentricIntegration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Integration Ignited Redefining Event-Driven Architecture at Wix - EventCentric
Natan Silnitsky
 
Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...Online Queue Management System for Public Service Offices [Focused on Municip...
Online Queue Management System for Public Service Offices [Focused on Municip...
Rishab Acharya
 
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptxIMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
IMAGE CLASSIFICATION USING CONVOLUTIONAL NEURAL NETWORK.P.pptx
usmanch7829
 
FME as an Orchestration Tool - Peak of Data & AI 2025
FME as an Orchestration Tool - Peak of Data & AI 2025FME as an Orchestration Tool - Peak of Data & AI 2025
FME as an Orchestration Tool - Peak of Data & AI 2025
Safe Software
 
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
Maintaining + Optimizing Database Health: Vendors, Orchestrations, Enrichment...
BradBedford3
 
Essentials of Resource Planning in a Downturn
Essentials of Resource Planning in a DownturnEssentials of Resource Planning in a Downturn
Essentials of Resource Planning in a Downturn
OnePlan Solutions
 
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
Build Smarter, Deliver Faster with Choreo - An AI Native Internal Developer P...
WSO2
 
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdfThe Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
The Future of Open Source Reporting Best Alternatives to Jaspersoft.pdf
Varsha Nayak
 
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdfHow to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
How to Generate Financial Statements in QuickBooks Like a Pro (1).pdf
QuickBooks Training
 
Leveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer IntentsLeveraging Foundation Models to Infer Intents
Leveraging Foundation Models to Infer Intents
Keheliya Gallaba
 
IBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - IntroductionIBM Rational Unified Process For Software Engineering - Introduction
IBM Rational Unified Process For Software Engineering - Introduction
Gaurav Sharma
 
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps CyclesFrom Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
From Chaos to Clarity - Designing (AI-Ready) APIs with APIOps Cycles
Marjukka Niinioja
 
Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3Software Engineering Process, Notation & Tools Introduction - Part 3
Software Engineering Process, Notation & Tools Introduction - Part 3
Gaurav Sharma
 
Generative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its ApplicationsGenerative Artificial Intelligence and its Applications
Generative Artificial Intelligence and its Applications
SandeepKS52
 
Top 5 Task Management Software to Boost Productivity in 2025
Top 5 Task Management Software to Boost Productivity in 2025Top 5 Task Management Software to Boost Productivity in 2025
Top 5 Task Management Software to Boost Productivity in 2025
Orangescrum
 
Ad

Migrating Web SDK from JS to TS