SlideShare a Scribd company logo
1 of 115
CRUSH CANDY
WITH
JavaONE TUT3970
ABOUT ME
ANTON EPPLE
▸ @monacotoni
▸ www.dukescript.com
▸ Dukehoff GmbH
SAFE HARBOR STATEMENT
The following is intended for information purposes only. I can
not be held responsible for the overuse of effects and
animations in this presentation. If any person in this room has
a medical condition that is triggered by fast moving objects on
the screen and/or explosions, he/she should probably better
leave now…
(I got carried away by the topic.)
AGENDA
Match3 Games
DukeScript
Game Logic & Implementation
Responsive Layout & Design
Dirty Hacks :-)
App Stores
MATCH3
$$$
KING
Q1 2015
550 MIO USERS
$569 MIO
CANDY CRUSH
SAGA
$216 MIOhttp://venturebeat.com/2015/05/14/candy-crush-saga-maker-king-beats-wall-streets-expectations/
DUKESCRI
PT
HOW DOES IT WORK?
Insert JVM here
Insert HTML5 Renderer here
DukeScript glues them together
HOW DOES IT WORK?
JVM executes Java Business
Logic, written with DukeScript
Java APIs
HTML5 Component renders the
result
DukeScript and it’s Java APIs control the
Renderer
DESKTOP
Hotspot
javafx.scene.web.WebView
DukeScript glues them together
ANDROID
Dalvik/ART
android.webkit.WebView
DukeScript glues them together
IOS
RoboVM
NSObject.UIResponder.UiView
.UIWebView
DukeScript glues them together
BROWSER
bck2brwsr/teavm
Chrome…
DukeScript glues them together
Achievement Unlocked!
DukeSCript Adept
GAME
LOGIC
row = index / level.getColumns();25 / 8;3;
0
1
2
3
4
5
6
7
col = index % level.getRows();25 % 8;1;
0 1 2 3 4 5 6 7
= 4
DUKESCRIPT
VIEWMODEL
@Model(className = "Tile",
properties = {
@Property(name = "type", type = int.class)
})
class TileVM {}
4
2 3
1
DUKESCRIPT
VIEWMODEL
GENERATED
4
2 3
1
public final class Tile implements Cloneable {
private static final Html4JavaType TYPE = new Html4JavaType();
private final org.netbeans.html.json.spi.Proto proto;
private int prop_type;
public int getType() {
proto.accessProperty("type");
return prop_type;
}
public void setType(int v) {
proto.verifyUnlocked();
Object o = prop_type;
if (TYPE.isSame(o , v)) return;
prop_type = v;
proto.valueHasMutated("type", o, v);
}
//…
DUKESCRIPT
VIEWMODEL
NESTED
@Model(className = "Level", properties = {
@Property(name = "columns", type = int.class),
@Property(name = "rows", type = int.class),
@Property(name = "tiles", type = Tile.class, ),
array = true
@Property(name = "play", type = boolean.class),
@Property(name = "moves", type = int.class),
@Property(name = "score", type = int.class)
})
class LevelVM {
Achievement Unlocked!
ViewModel Practicioner
Level level = new Level(…);
for (int i = 0; i < 64; i++) {
level.getTiles().set(i, new Tile(random.nextInt( 4 ));
}
Level level = new Level(…);
for (int i = 0; i < 64; i++) {
level.getTiles().set(i, new Tile(random.nextInt( 4 ));
}
do{
}while (isHorizontalMatch(level, i)
|| isVerticalMatch(level, i));
public static boolean isHorizontalMatch(Level level, int i) {
List<Tile> tiles = level.getTiles();
return tiles.get(i).getType() == tiles.get(i - 1).getType()
&& tiles.get(i).getType() == tiles.get(i - 2).getType()
&& columnNumber(level, i) >= 2;
}
public static boolean isVerticalMatch(Level level, int i) {
List<Tile> tiles = level.getTiles();
return rowNumber(level, i) >= 2
&& tiles.get(i).getType() == tiles.get(i - level.getColumns()).getType()
&& tiles.get(i).getType() == tiles.get(i - 2 * level.getColumns()).getType()
}
Achievement Unlocked!
match 3 Calculator
@Model View
databind="<binding>: <property> [,…]"
<!--show how many moves are left-->
<div id="moves-board" data-bind="text: moves"></div>
databind="<binding>: <property> [,…]"
<!--show current score-->
<div id="score-board" data-bind="text: score"></div>
<div id="grid" data-bind="foreach: tiles">
<div class="tile"
data-bind="css: 'tile-position-'+$index()+' tile-type-'+type()">
</div>
</div>
databind="<binding>: <property> [,…]"
<div id="grid" >
<div class="tile"
data-bind="css: 'tile-position-'+$index()+' tile-type-'+type()">
</div>
<div class="tile"
data-bind="css: 'tile-position-'+$index()+' tile-type-'+type()">
</div>
<div class="tile"
data-bind="css: 'tile-position-'+$index()+' tile-type-'+type()">
</div>
[63 times…]
</div>
Tile 0
Tile 1
Tile 2
Scope
<div id="grid" >
<div class="tile
tile-position-0 tile-type-1">
</div>
<div class="tile
tile-position-1 tile-type-4">
</div>
<div class="tile
tile-position-2 tile-type-4">
</div>
[63 times…]
</div>
Tile 0
Tile 1
Tile 2
Scope
<div id="grid" >
<div class="tile
tile-position-0 tile-type- ">
</div>
<div class="tile
tile-position-1 tile-type-4">
</div>
<div class="tile
tile-position-2 tile-type-4">
</div>
[63 times…]
</div>
Tile 0
Tile 1
Tile 2
Scope
// Update ViewModel in Java
Tile tile0 = level.getTiles().get(0);
tile0.setType(4);
14
@Model View
14
Achievement Unlocked!
Knockout Novice
RESPONSIVE
LAYOUT
PORTRAIT
LANDSCAPE
.tile {
height: 8.75vw;
width: 8.75vw;
}
@media screen and (orientation: landscape) {
.tile {
height: 8.75vh;
width: 8.75vh;
}
}
Browser Window
http://www.dukescript.com Search
100vw
100vh
Browser Window
http://www.dukescript.com Search
100vw
100vh
@media screen and
(orientation: portrait) {
.tile {
height: 8.75vw;
width: 8.75vw;
}
}
$tile_size: 8.75;
@for $i from 0 through 63{
// Row
$top: floor($i/8)*$tile_size;
// Column
$left: floor($i%8)*$tile_size;
.tile.tile-position-#{$i} {
top: $top+vw;
left: $left+vw;
}
}
.tile.tile-position-0 {
top: 0vw;
left: 0vw;
}
.tile.tile-position-1 {
top: 0vw;
left: 8.75vw;
}
[… 63]
Achievement Unlocked!
CSS Pro
Sprites
Sprites
Sprites
Sprites
SpritesSpritesheets
ResponsiveSpritesheets?
.tile {
position: absolute;
background: url("../assets/Monster.png");
background-size: 1200%;
}
100%
1200%
background-size
.tile.tile-type-0 {
background-position: 0 0; }
.tile.tile-type-1 {
background-position: 9.09091% 0; }
.tile.tile-type-2 {
background-position: 18.18182% 0; }
[…]
@for $i from 0 through 5{
$xPos: $i/(11)*100;
.tile.tile-type-#{$i}{
background-position: #{$xPos}% 0;
}
}
CSS Animations@-webkit-keyframes explode {
100% { background-position-y: 400% }
}
#grid .tile.explode{
-webkit-animation: explode .4s;
}
Steps@-webkit-keyframes explode {
100% { background-position-y: 400% }
}
#grid .tile.explode{
-webkit-animation: explode .4s steps(4);
}
Steps@-webkit-keyframes explode {
100% { background-position-y: 400% }
}
#grid .tile.explode{
-webkit-animation: explode .4s steps(4);
}
Steps@-webkit-keyframes explode {
100% { background-position-y: 400% }
}
#grid .tile.explode{
-webkit-animation: explode .4s steps(4);
}
Steps@-webkit-keyframes explode {
100% { background-position-y: 400% }
}
#grid .tile.explode{
-webkit-animation: explode .4s steps(4);
}
Achievement Unlocked!
CSS Wizard
Workshop
Install the Plugin:
https://platform.netbeans.org/tutorials/nbm-dukescript.html
APP
STORES
GOOGLE
▸Developer Account:
▸https://play.google.com/apps/publish/signup/
▸25$ (single payment)
▸Signing
▸http://developer.android.com/tools/publishing/app-signing.html#signing-
manually
▸keytool -genkey -v -keystore my-release-key.keystore
-alias alias_name -keyalg RSA -keysize 2048
-validity 10000
GOOGLE
Use Maven jarsigner to sign, or sign manually:
jarsigner -verbose -sigalg SHA1withRSA
-digestalg SHA1 -keystore ../ks.keystore
match3-android-1.0-SNAPSHOT.apk alias
GOOGLE
Zipalign:
zipalign -v 4 match3-android-1.0-SNAPSHOT.apk
match3.apk
Upload
fill out forms
upload images
wait
published after 1 day
APPLE
▸iTunes Developer Account:
▸https://developer.apple.com
▸99$ (annual)
▸Mac with XCode
APPLE
▸Info.plist.xml
▸Configure in RoboVM
▸https://developer.apple.com/library/ios/documentation/iPhon
e/Conceptual/iPhoneOSProgrammingGuide/ExpectedAppBe
haviors/ExpectedAppBehaviors.html#//apple_ref/doc/uid/TP4
0007072-CH3-SW9
APPLE
▸Create App Record in iTunes Connect
▸Create Signing identity and provisioning file using XCode
▸https://developer.apple.com/library/ios/documentation/IDEs/
Conceptual/AppDistributionGuide/SubmittingYourApp/Submi
ttingYourApp.html
▸Add reference to iosProvisioningProfile in pom.xml
▸RoboVM create IPA
Upload
fill out forms
upload (many) images
wait
Rejected!
Don't mention you're cross-platform…
The term "Android" in your description
doesn't help
The terms "beta", "demo", or "test"
don't help either
Some complaints are hard to understand
"Apps with placeholder text will be rejected"
APPLE
▸http://wiki.apidesign.org/wiki/AppStore
▸https://itunes.apple.com/us/app/fair-
minesweeper/id903688146?mt=8
But after a couple of weeks
CAST (IN ORDER OF APPEARANCE)
Thank you!
Game Over!

More Related Content

What's hot

Александр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыраженияАлександр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыраженияCocoaHeads
 
Getting touchy - an introduction to touch and pointer events / Future of Web ...
Getting touchy - an introduction to touch and pointer events / Future of Web ...Getting touchy - an introduction to touch and pointer events / Future of Web ...
Getting touchy - an introduction to touch and pointer events / Future of Web ...Patrick Lauke
 
Creating custom views
Creating custom viewsCreating custom views
Creating custom viewsMu Chun Wang
 
Ruby closures, how are they possible?
Ruby closures, how are they possible?Ruby closures, how are they possible?
Ruby closures, how are they possible?Carlos Alonso Pérez
 
Manual Acido Base
Manual Acido BaseManual Acido Base
Manual Acido Baseguesta72814
 
Html5 game programming overview
Html5 game programming overviewHtml5 game programming overview
Html5 game programming overview민태 김
 
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCsStandford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs彼得潘 Pan
 
The Ring programming language version 1.6 book - Part 53 of 189
The Ring programming language version 1.6 book - Part 53 of 189The Ring programming language version 1.6 book - Part 53 of 189
The Ring programming language version 1.6 book - Part 53 of 189Mahmoud Samir Fayed
 
The Ring programming language version 1.5.2 book - Part 50 of 181
The Ring programming language version 1.5.2 book - Part 50 of 181The Ring programming language version 1.5.2 book - Part 50 of 181
The Ring programming language version 1.5.2 book - Part 50 of 181Mahmoud Samir Fayed
 
Programas decompiladores
Programas decompiladoresProgramas decompiladores
Programas decompiladoresZulay Limaico
 
Elixir - GDG - Nantes
Elixir - GDG - NantesElixir - GDG - Nantes
Elixir - GDG - NantesAxel CATELAND
 
Drawing on canvas
Drawing on canvasDrawing on canvas
Drawing on canvassuitzero
 
Python 炒股指南
Python 炒股指南 Python 炒股指南
Python 炒股指南 Leo Zhou
 
Writing videogames with titanium appcelerator
Writing videogames with titanium appceleratorWriting videogames with titanium appcelerator
Writing videogames with titanium appceleratorAlessio Ricco
 
Mongoose v3 :: The Future is Bright
Mongoose v3 :: The Future is BrightMongoose v3 :: The Future is Bright
Mongoose v3 :: The Future is Brightaaronheckmann
 

What's hot (20)

The Code
The CodeThe Code
The Code
 
Александр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыраженияАлександр Зимин – Анимация как средство самовыражения
Александр Зимин – Анимация как средство самовыражения
 
Getting touchy - an introduction to touch and pointer events / Future of Web ...
Getting touchy - an introduction to touch and pointer events / Future of Web ...Getting touchy - an introduction to touch and pointer events / Future of Web ...
Getting touchy - an introduction to touch and pointer events / Future of Web ...
 
Creating custom views
Creating custom viewsCreating custom views
Creating custom views
 
Ruby closures, how are they possible?
Ruby closures, how are they possible?Ruby closures, how are they possible?
Ruby closures, how are they possible?
 
Manual Acido Base
Manual Acido BaseManual Acido Base
Manual Acido Base
 
Mgd08 lab01
Mgd08 lab01Mgd08 lab01
Mgd08 lab01
 
Decompiladores
DecompiladoresDecompiladores
Decompiladores
 
Html5 game programming overview
Html5 game programming overviewHtml5 game programming overview
Html5 game programming overview
 
Ext JS (Greek)
Ext JS (Greek)Ext JS (Greek)
Ext JS (Greek)
 
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCsStandford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
Standford 2015 week4: 1.Protocols and Delegation, Gestures 2. Multiple MVCs
 
The Ring programming language version 1.6 book - Part 53 of 189
The Ring programming language version 1.6 book - Part 53 of 189The Ring programming language version 1.6 book - Part 53 of 189
The Ring programming language version 1.6 book - Part 53 of 189
 
The Ring programming language version 1.5.2 book - Part 50 of 181
The Ring programming language version 1.5.2 book - Part 50 of 181The Ring programming language version 1.5.2 book - Part 50 of 181
The Ring programming language version 1.5.2 book - Part 50 of 181
 
Programas decompiladores
Programas decompiladoresProgramas decompiladores
Programas decompiladores
 
Elixir - GDG - Nantes
Elixir - GDG - NantesElixir - GDG - Nantes
Elixir - GDG - Nantes
 
JavaScript Gotchas
JavaScript GotchasJavaScript Gotchas
JavaScript Gotchas
 
Drawing on canvas
Drawing on canvasDrawing on canvas
Drawing on canvas
 
Python 炒股指南
Python 炒股指南 Python 炒股指南
Python 炒股指南
 
Writing videogames with titanium appcelerator
Writing videogames with titanium appceleratorWriting videogames with titanium appcelerator
Writing videogames with titanium appcelerator
 
Mongoose v3 :: The Future is Bright
Mongoose v3 :: The Future is BrightMongoose v3 :: The Future is Bright
Mongoose v3 :: The Future is Bright
 

Similar to Crush Candy with DukeScript

An Introduction To jQuery
An Introduction To jQueryAn Introduction To jQuery
An Introduction To jQueryAndy Gibson
 
Imagine a world without mocks
Imagine a world without mocksImagine a world without mocks
Imagine a world without mockskenbot
 
Visual Component Testing -- w/ Gil Tayar (Applitools) and Gleb Bahmutov (Cyp...
Visual Component Testing  -- w/ Gil Tayar (Applitools) and Gleb Bahmutov (Cyp...Visual Component Testing  -- w/ Gil Tayar (Applitools) and Gleb Bahmutov (Cyp...
Visual Component Testing -- w/ Gil Tayar (Applitools) and Gleb Bahmutov (Cyp...Applitools
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Chris Alfano
 
Animating angular applications
Animating angular applicationsAnimating angular applications
Animating angular applicationsTomek Sułkowski
 
JavaFX 2.0 With Alternative Languages [Portuguese]
JavaFX 2.0 With Alternative Languages [Portuguese]JavaFX 2.0 With Alternative Languages [Portuguese]
JavaFX 2.0 With Alternative Languages [Portuguese]Stephen Chin
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?Ankara JUG
 
Cheap frontend tricks
Cheap frontend tricksCheap frontend tricks
Cheap frontend tricksambiescent
 
JavaFX 2.0 With Alternative Languages - JavaOne 2011
JavaFX 2.0 With Alternative Languages - JavaOne 2011JavaFX 2.0 With Alternative Languages - JavaOne 2011
JavaFX 2.0 With Alternative Languages - JavaOne 2011Stephen Chin
 
Rails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRaimonds Simanovskis
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1Bitla Software
 
James Thomas - Serverless Machine Learning With TensorFlow - Codemotion Berli...
James Thomas - Serverless Machine Learning With TensorFlow - Codemotion Berli...James Thomas - Serverless Machine Learning With TensorFlow - Codemotion Berli...
James Thomas - Serverless Machine Learning With TensorFlow - Codemotion Berli...Codemotion
 
Developing Google Glass
Developing Google GlassDeveloping Google Glass
Developing Google GlassJohnny Sung
 
node.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Servernode.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the ServerDavid Ruiz
 
An Introduction to Windows PowerShell
An Introduction to Windows PowerShellAn Introduction to Windows PowerShell
An Introduction to Windows PowerShellDale Lane
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confooDamien Seguy
 

Similar to Crush Candy with DukeScript (20)

An Introduction To jQuery
An Introduction To jQueryAn Introduction To jQuery
An Introduction To jQuery
 
Imagine a world without mocks
Imagine a world without mocksImagine a world without mocks
Imagine a world without mocks
 
mobl
moblmobl
mobl
 
Visual Component Testing -- w/ Gil Tayar (Applitools) and Gleb Bahmutov (Cyp...
Visual Component Testing  -- w/ Gil Tayar (Applitools) and Gleb Bahmutov (Cyp...Visual Component Testing  -- w/ Gil Tayar (Applitools) and Gleb Bahmutov (Cyp...
Visual Component Testing -- w/ Gil Tayar (Applitools) and Gleb Bahmutov (Cyp...
 
A More Flash Like Web?
A More Flash Like Web?A More Flash Like Web?
A More Flash Like Web?
 
Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011Jarv.us Showcase — SenchaCon 2011
Jarv.us Showcase — SenchaCon 2011
 
Animating angular applications
Animating angular applicationsAnimating angular applications
Animating angular applications
 
JavaFX 2.0 With Alternative Languages [Portuguese]
JavaFX 2.0 With Alternative Languages [Portuguese]JavaFX 2.0 With Alternative Languages [Portuguese]
JavaFX 2.0 With Alternative Languages [Portuguese]
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?
 
Introduction to Groovy
Introduction to GroovyIntroduction to Groovy
Introduction to Groovy
 
Cheap frontend tricks
Cheap frontend tricksCheap frontend tricks
Cheap frontend tricks
 
JavaFX 2.0 With Alternative Languages - JavaOne 2011
JavaFX 2.0 With Alternative Languages - JavaOne 2011JavaFX 2.0 With Alternative Languages - JavaOne 2011
JavaFX 2.0 With Alternative Languages - JavaOne 2011
 
Rails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and JasmineRails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
Rails-like JavaScript Using CoffeeScript, Backbone.js and Jasmine
 
How to build a html5 websites.v1
How to build a html5 websites.v1How to build a html5 websites.v1
How to build a html5 websites.v1
 
James Thomas - Serverless Machine Learning With TensorFlow - Codemotion Berli...
James Thomas - Serverless Machine Learning With TensorFlow - Codemotion Berli...James Thomas - Serverless Machine Learning With TensorFlow - Codemotion Berli...
James Thomas - Serverless Machine Learning With TensorFlow - Codemotion Berli...
 
TDD per Webapps
TDD per WebappsTDD per Webapps
TDD per Webapps
 
Developing Google Glass
Developing Google GlassDeveloping Google Glass
Developing Google Glass
 
node.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Servernode.js - Eventful JavaScript on the Server
node.js - Eventful JavaScript on the Server
 
An Introduction to Windows PowerShell
An Introduction to Windows PowerShellAn Introduction to Windows PowerShell
An Introduction to Windows PowerShell
 
Top 10 php classic traps confoo
Top 10 php classic traps confooTop 10 php classic traps confoo
Top 10 php classic traps confoo
 

Recently uploaded

WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2
 
WSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in UgandaWSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in UgandaWSO2
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Eraconfluent
 
Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2WSO2
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2
 
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next IntegrationWSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next IntegrationWSO2
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!WSO2
 
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...WSO2
 
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfAzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfryanfarris8
 
WSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid EnvironmentsWSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid EnvironmentsWSO2
 
WSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNeo4j
 
WSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - KanchanaWSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - KanchanaWSO2
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationJuha-Pekka Tolvanen
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 

Recently uploaded (20)

WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public AdministrationWSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
WSO2CON 2024 - How CSI Piemonte Is Apifying the Public Administration
 
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open SourceWSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
WSO2CON 2024 - Freedom First—Unleashing Developer Potential with Open Source
 
WSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in UgandaWSO2CON 2024 - Building a Digital Government in Uganda
WSO2CON 2024 - Building a Digital Government in Uganda
 
Evolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI EraEvolving Data Governance for the Real-time Streaming and AI Era
Evolving Data Governance for the Real-time Streaming and AI Era
 
Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2Driving Innovation: Scania's API Revolution with WSO2
Driving Innovation: Scania's API Revolution with WSO2
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next IntegrationWSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
WSO2CON2024 - Why Should You Consider Ballerina for Your Next Integration
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
WSO2CON 2024 - Not Just Microservices: Rightsize Your Services!
 
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
WSO2CON 2024 - Lessons from the Field: Legacy Platforms – It's Time to Let Go...
 
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdfAzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
AzureNativeQumulo_HPC_Cloud_Native_Benchmarks.pdf
 
WSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid EnvironmentsWSO2Con2024 - Software Delivery in Hybrid Environments
WSO2Con2024 - Software Delivery in Hybrid Environments
 
WSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration ToolingWSO2Con2024 - Low-Code Integration Tooling
WSO2Con2024 - Low-Code Integration Tooling
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of TransformationWSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
WSO2CON 2024 - Designing Event-Driven Enterprises: Stories of Transformation
 
Novo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMsNovo Nordisk: When Knowledge Graphs meet LLMs
Novo Nordisk: When Knowledge Graphs meet LLMs
 
WSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - KanchanaWSO2Con2024 - Hello Choreo Presentation - Kanchana
WSO2Con2024 - Hello Choreo Presentation - Kanchana
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 

Crush Candy with DukeScript