SlideShare a Scribd company logo
A more Flash like web?
Murat Can ALPAY
linkedin.com/in/mcalpay
mcatr.blogspot.com
● What to present?
● HTML5?
● Software Dev.?
VS?



● A fair comparison?
Content
●   History
●   JavaScript
●   Canvas
●   Audio
●   WebSocket
●   Offline
Why a new HTML?

  ●     games?
  ●     video?
  ●     3d?
  ●     ...




http://net.tutsplus.com/articles/general/a-brief-history-of-html5/
HTML5 Chronology
  ● 2004
        ○ WHATWG (Apple, Mozilla, Opera)
  ● 2006
        ○ W3C XHTML
  ● 2008
        ○ First release
        ○ Firefox 3, and others
  ● 2010
        ○ Steve Jobs vs Flash
  ● 2014
        ○ Final


http://net.tutsplus.com/articles/general/a-brief-history-of-html5/
W3C (HTML5 Chronology)
  ● XHTML 2.0
        ○ No Backward Compability!
        ○ Strictly XML




http://net.tutsplus.com/articles/general/a-brief-history-of-html5/
WHAT WG
  ● 2004 W3C Workshop
  ● Backward Compatible
  ● Detailed Spec.
        ○ Non Strict HTML Parser




http://net.tutsplus.com/articles/general/a-brief-history-of-html5/
“The Web is, and should be, driven by technical merit, not consensus. The
       W3C pretends otherwise, and wastes a lot of time for it. The WHATWG
                             does not.” – Ian Hickson
                               Benevolent Dictator for Life

     <time> incidence




http://net.tutsplus.com/articles/general/a-brief-history-of-html5/
Jobs vs Adobe
 ● November 2011
        ○ Adobe: No Flash for Mobil and TV




http://en.wikipedia.org/wiki/Adobe_Flash
HTML5 Today
● Youtube HTML5 test
  ○ http://www.youtube.com/html5


● Mobile
  ○ Amazon
HTML5 Browser Support
JavaScript ?
● Minecraft
● Quake 3
● Cut the rope




                 JS
Minecraft in JS




                  JS
Quake in JS
http://media.tojicode.com/q3bsp/




                                   JS
Cut The Rope
http://www.cuttherope.ie/dev/
● Performance
  ○ 37 - 62 FPS




                                JS
JavaScript ?
for(i = 1; i <= 3; i++) {
      print();
}

function print() {
      for(i = 1; i <= 3; i++) {
           console.log(i);
      }
}




                                  JS
JavaScript ? (var)
for(var i = 1; i <= 3; i++) {
      print();
}

function print() {
      for(i = 1; i <= 3; i++) {
           console.log(i);
      }
}




                                  JS
JavaScript ? ( ?, var)
for(i = 1; i <= 3; i++) {
      print();
}

function print() {
      for(var i = 1; i <= 3; i++) {
           console.log(i);
      }
}




                                      JS
JavaScript ? (var, var)
for(var i = 1; i <= 3; i++) {
      print();
}

function print() {
      for(var i = 1; i <= 3; i++) {
           console.log(i);
      }
}




                                      JS
JavaScript ? (Tools)
● Chrome
  ○ Developer Tools


● Ant Scripts




                       JS
Canvas
● Low level graphics lib.
● 2D
● 3D
  ○ WebGL
  ○ Three.js
Canvas (Context)
<canvas id="canvas" width="800px" height="600px"/>

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");
Canvas (Rectangle)

ctx.fillStyle = "red";
ctx.fillRect(50,50,400,300);
Canvas (State)
for(var i=0; i<data.length; i++) {
   ctx.save();
   ctx.translate(40+i*100, 460-dp*4);
   var dp = data[i];
   ctx.fillRect(0,0,50,dp*4);
   ctx.restore();
}
Canvas (Gradient)
var grad = ctx.createLinearGradient(0, 0, 800, 600);
grad.addColorStop(0, "red");
grad.addColorStop(1, "yellow");
ctx.fillStyle = grad;
Canvas (Path)
ctx.beginPath();
...
ctx.moveTo(x1,y1);
ctx.lineTo(x2,y2);
ctx.lineTo(x3,y3)
ctx.closePath();
Canvas (Image)
var spaceImg = new Image();
spaceImg.src = 'space.png';
ctx.drawImage(spaceImg, 0, 0);
Canvas (Edit an Image)
var img = new Image();
img.onload = function() {
  ctx.drawImage(img,0,0);
  var data =
  ctx.getImageData(0,0,
     canvas.width,canvas.height);
...
  ctx.putImageData(data,0,0);
}
img.src = "space.png";
Canvas (Text)
ctx.fillStyle = "white";
ctx.font = 16 + "pt Arial ";
ctx.fillText("fps :" + Math.floor(1000 / diffTime), 10,
20);
Canvas (Mouse Events)
canvas.addEventListener('mousemove', onMousemove, false);
canvas.addEventListener('mousedown', onMouseclick, false);

function onMousemove(ev) {
    var x, y;
    if (ev.layerX || ev.layerX == 0) { // Firefox
        x = ev.layerX;
        y = ev.layerY;
    } else if (ev.offsetX || ev.offsetX == 0) { // Opera
        x = ev.offsetX;
        y = ev.offsetY;
    }
}
Canvas (Animation)
window.requestAnimFrame = (function () {
    return window.requestAnimationFrame ||
            window.webkitRequestAnimationFrame ||
            window.mozRequestAnimationFrame ||
            window.oRequestAnimationFrame ||
            window.msRequestAnimationFrame ||
            function (callback) {
                window.setTimeout(callback, 1000 / 60);
            };
})();

window.requestAnimFrame(drawIt);
Audio
● 3D Positional Audio
Audio (Basic)
var actx = new window.webkitAudioContext();
var request = new XMLHttpRequest();
request.open('GET', '/blast.wav', true);
request.responseType = 'arraybuffer';
request.onload = function (ev) {
   actx.decodeAudioData(ev.target.response, function (buffer){
       var source = actx.createBufferSource();
       source.buffer = buffer;
       source.connect(actx.destination);
       source.noteOn(0);
   });
};
request.send();
Audio (Gain)
function playSource(buffer, gainVol, loop) {
    var gnode = actx.createGainNode();
    var source = actx.createBufferSource();
    source.loop = loop;
    source.buffer = buffer;
    source.connect(gnode);
    gnode.connect(actx.destination);
    gnode.gain.value = gainVol;
    source.noteOn(0);
}
Audio (AudioPannerNode)
function playPositionalSource(holder, src, dest) {
    var gnode = actx.createGainNode();
    var source = actx.createBufferSource();
    source.buffer = holder.src;
    var panner = actx.createPanner();
    panner.setPosition(src.x / 800, src.y / 600, 0);
    panner.connect(gnode);
    gnode.connect(actx.destination);
    source.connect(panner);
    actx.listener.setPosition(dest.x / 800, dest.y / 600, 0);
    gnode.gain.value = holder.gain;
    source.noteOn(0);
}
WebSocket
●   Simple API
●   No HTTP Headers
●   Needs ports
●   Server support
WebSocket (Callbacks)
var connection = new WebSocket('ws://localhost:8080/play', ['text']);
connection.onopen = function () {
...
}

connection.onerror = function (error) {
  console.log('WebSocket Error ' + error);
}

connection.onmessage = function (e) {
    var jo = JSON.parse(e.data);
...
}
WebSocket (Send)
function send(msg) {
  if(connection.readyState == 1) {
      connection.send(msg)
  }
}
WebSocket (Jetty)
"Don't deploy your app. to Jetty, Deploy Jetty to your app."
WebSocket (WebSocketServlet)
import org.eclipse.jetty.websocket.WebSocketServlet

public class WSGameServlet extends WebSocketServlet {
...
    @Override
    public WebSocket doWebSocketConnect(HttpServletRequest req,
                                        String protocol) {
        return new GameSocket(createNewPlayer(req), world);
    }

}
WebSocket (WebSocket onOpen)
import org.eclipse.jetty.websocket.WebSocket

public class GameSocket implements    WebSocket,
                                       WebSocket.OnTextMessage {
...
      @Override
      public void onOpen(Connection connection) {
          this.connection = connection;
          world.addSocket(this);
      }

}
WebSocket (WebSocket onClose)
import org.eclipse.jetty.websocket.WebSocket

public class GameSocket implements    WebSocket,
                                       WebSocket.OnTextMessage {
...
      @Override
      public void onClose(int closeCode, String msg) {
          world.removeSocket(this);
          world.removePlayer(avatar.getId());
      }

}
WebSocket (WebSocket onMessage)
import org.eclipse.jetty.websocket.WebSocket

public class GameSocket implements   WebSocket,
                                      WebSocket.OnTextMessage {
...
  public void onMessage(String msg) {
    try {
      Map<String, String> attMap = getAttributeMap(msg);
      String pathInfo = attMap.get("path");
      if ("static".equals(pathInfo)) {
        connection.sendMessage("static/" + staticGameMap);
      } else if ("text".equals(pathInfo)) {
      ...
  }
}
WebSocket (sockets)
public class AxeWorld extends TimerTask implements World {
...
    public final Set<GameSocket> sockets;

      @Override public void addSocket(GameSocket gameSocket)...

      @Override public void removeSocket(GameSocket gameSocket)...

      @Override
      public void run() {...
          for (GameSocket gs : sockets) {
              gs.sendMessage(msg);
...
3D
● WebGL
  ○ experimental


● Three.js
3D (Three.js)

● https://github.com/mrdoob/three.js
● High level
● Renderers
  ○ Canvas
  ○ WebGL
  ○ SVG
3D (Three.js)
 function init() {
    camera = new THREE.PerspectiveCamera( 75, window.innerWidth /
 window.innerHeight, 1, 10000 );
    camera.position.z = 1000;
    scene = new THREE.Scene();
    geometry = new THREE.CubeGeometry( 200, 200, 200 );
    material = new THREE.MeshBasicMaterial( { color: 0xff0000,
 wireframe: true } );
    mesh = new THREE.Mesh( geometry, material );
    scene.add( mesh );
    renderer = new THREE.CanvasRenderer();
    renderer.setSize( window.innerWidth, window.innerHeight );
    document.body.appendChild( renderer.domElement );
 }


https://github.com/mrdoob/three.js
3D (Three.js)
        function animate() {
            // note: three.js includes requestAnimationFrame shim
            requestAnimationFrame( animate );

              mesh.rotation.x += 0.01;
              mesh.rotation.y += 0.02;

              renderer.render( scene, camera );

        }




https://github.com/mrdoob/three.js
3D (Three.js)
Storage
● Local

● Session

● Database
Storage (Local Storage)
● Cookies
  ○ 4KB
  ○ HTTP Headers

● 5 MB key/value
Storage (Local Storage)
localStorage.commands = JSON.stringify(commands);


if (window.addEventListener) {
   window.addEventListener("storage", handle_storage, false);
} else {
   window.attachEvent("onstorage", handle_storage);
};
Storage (Session Storage)
● for a session

● sessionStorage
Storage (Database Storage)

● 5 MB and more

● Web SQL Database
Storage (IndexDB)
● Not yet
Application Cache
● Old Way Directives

● New Way Manifest
ApplicationCache (Cache Directives)
● HTTP
Application Cache (Manifest)
● Cache what?

● mime-type : text/cache-manifest

● CACHE, NETWORK, FALLBACK
Manifest
<!DOCTYPE html>
<html manifest="cache.mf">
<head>...
Manifest (CACHE)
CACHE MANIFEST

CACHE:
/favicon.ico
index.html
stylesheet.css
images/logo.png
scripts/main.js




http://www.html5rocks.com
Manifest (NETWORK)
# online:
NETWORK:
login.php
/myapi
http://api.twitter.com




http://www.html5rocks.com
Manifest (FALLBACK)
# static.html will be served if main.py is inaccessible
# offline.jpg will be served in place of all images in
images/large/
# offline.html will be served in place of all other .html files
FALLBACK:
/main.py /static.html
images/large/ images/offline.jpg
*.html /offline.html




http://www.html5rocks.com
Demo
Thanks
● Mert Çalıßkan
● Çağatay Çivici
● Barıß Bal
Murat Can ALPAY
linkedin.com/in/mcalpay
mcatr.blogspot.com

More Related Content

PDF
HTML5 - Daha Flash bir web?
Ankara JUG
 
PDF
HTML5ăŁăŠćż…èŠïŒŸ
GCS2013
 
PDF
Pixelplant - WebDev Meetup Salzburg
wolframkriesing
 
PPT
Praktik Pengembangan Konten E-Learning HTML5 Sederhana
Muhammad Yusuf
 
PPTX
ĐœĐžŃ…Đ°ĐžĐ» ĐœĐ°Ń‚Ń€ĐŸŃĐŸĐČ, ĐŸĐŸĐČŃĐ”ĐŽĐœĐ”ĐČĐœŃ‹Đč ĐĄ++: boost Đž STL
Sergey Platonov
 
PDF
Intro to Clojure's core.async
Leonardo Borges
 
PDF
HTML5 game dev with three.js - HexGL
Thibaut Despoulain
 
PDF
The Ring programming language version 1.5.1 book - Part 64 of 180
Mahmoud Samir Fayed
 
HTML5 - Daha Flash bir web?
Ankara JUG
 
HTML5ăŁăŠćż…èŠïŒŸ
GCS2013
 
Pixelplant - WebDev Meetup Salzburg
wolframkriesing
 
Praktik Pengembangan Konten E-Learning HTML5 Sederhana
Muhammad Yusuf
 
ĐœĐžŃ…Đ°ĐžĐ» ĐœĐ°Ń‚Ń€ĐŸŃĐŸĐČ, ĐŸĐŸĐČŃĐ”ĐŽĐœĐ”ĐČĐœŃ‹Đč ĐĄ++: boost Đž STL
Sergey Platonov
 
Intro to Clojure's core.async
Leonardo Borges
 
HTML5 game dev with three.js - HexGL
Thibaut Despoulain
 
The Ring programming language version 1.5.1 book - Part 64 of 180
Mahmoud Samir Fayed
 

What's hot (20)

PDF
ĐŸĐŸŃ€Ń‚ĐžŃ€ŃƒĐ”ĐŒ ŃŃƒŃ‰Đ”ŃŃ‚ĐČŃƒŃŽŃ‰Đ”Đ” Web-ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” ĐČ ĐČĐžŃ€Ń‚ŃƒĐ°Đ»ŃŒĐœŃƒŃŽ Ń€Đ”Đ°Đ»ŃŒĐœĐŸŃŃ‚ŃŒ / Đ”Đ”ĐœĐžŃ Đ Đ°ĐŽĐžĐœ ...
Ontico
 
PPT
WebGL: GPU acceleration for the open web
pjcozzi
 
PPTX
The State of JavaScript
Domenic Denicola
 
PDF
The Ring programming language version 1.7 book - Part 72 of 196
Mahmoud Samir Fayed
 
PDF
WebGL and three.js
Anton Narusberg
 
PDF
D3.js workshop
Anton Katunin
 
PPTX
WebGL and three.js - Web 3D Graphics
PSTechSerbia
 
PDF
mobl presentation @ IHomer
zefhemel
 
PPTX
фабрОĐșа Blockly
ЕĐČĐłĐ”ĐœĐžĐč Đ‘Đ”Đ»ĐŸĐČ
 
PDF
HTML5 Canvas - Let's Draw!
Phil Reither
 
PDF
rx.js make async programming simpler
Alexander Mostovenko
 
PDF
Gems of GameplayKit. UA Mobile 2017.
UA Mobile
 
PDF
Rxjs kyivjs 2015
Alexander Mostovenko
 
PDF
From Hello World to the Interactive Web with Three.js: Workshop at FutureJS 2014
Verold
 
PDF
mobl - model-driven engineering lecture
zefhemel
 
PDF
The Ring programming language version 1.5.4 book - Part 59 of 185
Mahmoud Samir Fayed
 
PDF
Lambda expressions in C++
Dimitrios Platis
 
PDF
Creating Applications with WebGL and Three.js
Future Insights
 
DOC
Ocr code
wi7sonjoseph
 
PDF
You will learn RxJS in 2017
ćèŸ° æŽȘ
 
ĐŸĐŸŃ€Ń‚ĐžŃ€ŃƒĐ”ĐŒ ŃŃƒŃ‰Đ”ŃŃ‚ĐČŃƒŃŽŃ‰Đ”Đ” Web-ĐżŃ€ĐžĐ»ĐŸĐ¶Đ”ĐœĐžĐ” ĐČ ĐČĐžŃ€Ń‚ŃƒĐ°Đ»ŃŒĐœŃƒŃŽ Ń€Đ”Đ°Đ»ŃŒĐœĐŸŃŃ‚ŃŒ / Đ”Đ”ĐœĐžŃ Đ Đ°ĐŽĐžĐœ ...
Ontico
 
WebGL: GPU acceleration for the open web
pjcozzi
 
The State of JavaScript
Domenic Denicola
 
The Ring programming language version 1.7 book - Part 72 of 196
Mahmoud Samir Fayed
 
WebGL and three.js
Anton Narusberg
 
D3.js workshop
Anton Katunin
 
WebGL and three.js - Web 3D Graphics
PSTechSerbia
 
mobl presentation @ IHomer
zefhemel
 
фабрОĐșа Blockly
ЕĐČĐłĐ”ĐœĐžĐč Đ‘Đ”Đ»ĐŸĐČ
 
HTML5 Canvas - Let's Draw!
Phil Reither
 
rx.js make async programming simpler
Alexander Mostovenko
 
Gems of GameplayKit. UA Mobile 2017.
UA Mobile
 
Rxjs kyivjs 2015
Alexander Mostovenko
 
From Hello World to the Interactive Web with Three.js: Workshop at FutureJS 2014
Verold
 
mobl - model-driven engineering lecture
zefhemel
 
The Ring programming language version 1.5.4 book - Part 59 of 185
Mahmoud Samir Fayed
 
Lambda expressions in C++
Dimitrios Platis
 
Creating Applications with WebGL and Three.js
Future Insights
 
Ocr code
wi7sonjoseph
 
You will learn RxJS in 2017
ćèŸ° æŽȘ
 
Ad

Viewers also liked (7)

PDF
Çevik Öğretiler Scrum
Murat Can ALPAY
 
PDF
Android Thread Modeli
Murat Can ALPAY
 
PPTX
Çaylak Javacılara Yol Haritası
Murat Can ALPAY
 
PPT
Java frameworks
Murat Can ALPAY
 
PDF
What's Next in Growth? 2016
Andrew Chen
 
PDF
The Outcome Economy
Helge TennĂž
 
PDF
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
Barry Feldman
 
Çevik Öğretiler Scrum
Murat Can ALPAY
 
Android Thread Modeli
Murat Can ALPAY
 
Çaylak Javacılara Yol Haritası
Murat Can ALPAY
 
Java frameworks
Murat Can ALPAY
 
What's Next in Growth? 2016
Andrew Chen
 
The Outcome Economy
Helge TennĂž
 
32 Ways a Digital Marketing Consultant Can Help Grow Your Business
Barry Feldman
 
Ad

Similar to A More Flash Like Web? (20)

PDF
Intro to HTML5
Jussi Pohjolainen
 
PPTX
HTML5 - Chances and Pitfalls (Bytro Labs GmbH)
Felix Faber
 
PDF
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
 
PDF
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
 
PDF
Hybrid Apps (Native + Web) via QtWebKit
Ariya Hidayat
 
PDF
Google's HTML5 Work: what's next?
Patrick Chanezon
 
PDF
HTML5 New Features and Resources
Ron Reiter
 
PDF
JavaONE 2012 Using Java with HTML5 and CSS3
Helder da Rocha
 
PDF
Zepto and the rise of the JavaScript Micro-Frameworks
Thomas Fuchs
 
PPTX
HTML5 for Rich User Experience
Mahbubur Rahman
 
PDF
three.js WebGL library presentation
Yleisradio
 
PPT
Game Development With HTML5
Gil Megidish
 
PDF
W3C HTML5 KIG-The complete guide to building html5 games
Changhwan Yi
 
PPTX
HTML5 and Other Modern Browser Game Tech
vincent_scheib
 
PPTX
HTML5: An Overview
Nagendra Um
 
PDF
Intro to HTML5 Game Programming
James Williams
 
PDF
HTML5 and web platform
dynamis
 
PDF
Introduction to QtWebKit
Ariya Hidayat
 
PDF
HTML5 & Web Platform
SwapSkills
 
PPTX
Html5
Ahmed Jadalla
 
Intro to HTML5
Jussi Pohjolainen
 
HTML5 - Chances and Pitfalls (Bytro Labs GmbH)
Felix Faber
 
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
 
Hybrid Apps (Native + Web) using WebKit
Ariya Hidayat
 
Hybrid Apps (Native + Web) via QtWebKit
Ariya Hidayat
 
Google's HTML5 Work: what's next?
Patrick Chanezon
 
HTML5 New Features and Resources
Ron Reiter
 
JavaONE 2012 Using Java with HTML5 and CSS3
Helder da Rocha
 
Zepto and the rise of the JavaScript Micro-Frameworks
Thomas Fuchs
 
HTML5 for Rich User Experience
Mahbubur Rahman
 
three.js WebGL library presentation
Yleisradio
 
Game Development With HTML5
Gil Megidish
 
W3C HTML5 KIG-The complete guide to building html5 games
Changhwan Yi
 
HTML5 and Other Modern Browser Game Tech
vincent_scheib
 
HTML5: An Overview
Nagendra Um
 
Intro to HTML5 Game Programming
James Williams
 
HTML5 and web platform
dynamis
 
Introduction to QtWebKit
Ariya Hidayat
 
HTML5 & Web Platform
SwapSkills
 
Html5
Ahmed Jadalla
 

Recently uploaded (20)

PDF
Doc9.....................................
SofiaCollazos
 
PDF
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
PDF
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
PDF
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
PDF
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
PDF
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PPTX
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
PDF
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PPTX
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
PDF
Software Development Methodologies in 2025
KodekX
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
PDF
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Doc9.....................................
SofiaCollazos
 
Responsible AI and AI Ethics - By Sylvester Ebhonu
Sylvester Ebhonu
 
Google I/O Extended 2025 Baku - all ppts
HusseinMalikMammadli
 
Research-Fundamentals-and-Topic-Development.pdf
ayesha butalia
 
The Future of Mobile Is Context-Aware—Are You Ready?
iProgrammer Solutions Private Limited
 
Presentation about Hardware and Software in Computer
snehamodhawadiya
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
The-Ethical-Hackers-Imperative-Safeguarding-the-Digital-Frontier.pptx
sujalchauhan1305
 
AI-Cloud-Business-Management-Platforms-The-Key-to-Efficiency-Growth.pdf
Artjoker Software Development Company
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
Introduction to Flutter by Ayush Desai.pptx
ayushdesai204
 
Software Development Methodologies in 2025
KodekX
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
Peak of Data & AI Encore - Real-Time Insights & Scalable Editing with ArcGIS
Safe Software
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
Make GenAI investments go further with the Dell AI Factory
Principled Technologies
 
A Strategic Analysis of the MVNO Wave in Emerging Markets.pdf
IPLOOK Networks
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 

A More Flash Like Web?