SlideShare una empresa de Scribd logo
1 de 103
Descargar para leer sin conexión
javascript & the future
Jeff Miccolis
Development Seed
Open Atrium
Features
Context
Strongarm
Jeff Miccolis
MapBox
First, a brief apology.
Three “war” stories
about things that are
hard with php & drupal
...and easier in node.js
Two lessons I learned
...from Drupal and
node.js work
SERVER SIDE
JAVASCRIPT
V8
CHROME ‘S
JAVASCRIPT ENGINE
ON YOUR SERVER
1. Sending lots of email
Open
Atrium
Single emails
Digests email
SMS
XMPP (jabber)
Twitter
etc, etc, etc...
channel independent messages

don’t send e-mails to users, send them 'messages'

        delivered by mail, IM, SMS, etc...



d.o/project/Messaging
Problems
Send an email to one user - 50 ms

        28 users - 1.4 seconds

        600 users - 30 seconds



Problems
Run cron every 5 minutes

   and you can send a lot more emails

   but if one run doesn’t complete...



Problems
<?php

$addresses = array(
   'jeff@mapbox.com',
   'alex@mapbox.com',
   'eric@mapbox.com'
);

$message = 'I am writing to inform you of a...';
$count = 0;

foreach($addresses as $sucker) {
  if (mail($sucker, 'New opportunity', $message)) {
     $count++;
  };
}

echo "$count messages sent";
var mail = require('mail');

var addresses = [
    'jeff@mapbox.com',
    'alex@mapbox.com',
    'eric@mapbox.com'
];

var message = 'I am writing to inform you of a...';
var count = 0;

addresses.forEach(function(sucker, i) {
    mail(sucker, 'New opportunity', message, function(err) {
        if (!err) { count++; }

            if (i == addresses.length - 1) {
                console.log(count +" messages sent");
            }
      });
});
// Attempt to send email.
if (mail($sucker, 'New opportunity', $message)) {
    $count++
};

// Once email is sent, get the next address.
echo 'next';




// Attempt to send email.
mail(sucker, 'New opportunity', message, function(err) {
    if (!err) { count++; }
});

// Don't wait, get the next address NOW.
console.log('next');
Send an email ~ 5 ms processing, 45 ms waiting

  28 emails ~ 140 ms to process, done 45 ms later.

600 users ~ 3 seconds to process, done 45 ms later.



Stop waiting around
600 emails w/Php: ~30 seconds

    600 emails w/node.js: ~3 seconds




Stop waiting around
DEMO




Stop waiting around
2. Handling feeds
Fetch RSS feeds
       Fetch original article
         Tag items (calais)
       Tag items (watchlist)
       Tag items (wikipedia)
          Geocode items



The task
Thousands of feeds.

         Millions of items.

       Gigs and Gigs of data.



The scale
cron.php




Problems
maggie
multi-threaded python daemon




maggied
4 “retriever” workers get batches of 50 items.

       they fetch/tag/geocode each item.




maggied
retrieve original story: 300ms

             tag: 100ms

          geocode: 150ms

           TOTAL: 550ms


maggied
Nearly all of that 550ms is spent idle.




Stop waiting around
...but we could run “packs” of retrievers!
Is that really the best
idea?
Replace the retrievers
with a single
HYPERACTIVE SQUID!
The squid runs up and down as fast as it
   can dealing with each item in turn.

It fires off any long running I/O operations
    and then moves on to the next item.

When the I/O operation reports progress,
it does a little more work on behalf of the
             corresponding item.
Event loop




100% async
Anything that leaves v8 takes a callback.




100% async
filesystem, network, stdio, timers, child processes




100% async
var fs = require('fs');

fs.readFile('/etc/passwd', function (err, data) {
  if (err) throw err;
  console.log(data);
});




var request = require('request');

request('http://example.com', function (err, resp, body) {
    if (!err && resp.statusCode == 200) {
        console.log(body);
    }
});
Limiting factors change:

  how many open sockets are you allowed?
    how much bandwidth can you grab?
     how fast can you issue requests?



100% async
3. Big files, long sessions.
gigabyte




What’s big?
hours




What’s long?
HTTP




What’s a session?
A category of stories...
upload_max_filesize

         post_max_size

         max_input_time

       max_execution_time


Big uploads in php
this approach caps out ~500mb




Big uploads in php
Opens the door to DOS.

        Tolerates application bloat.

 Problems in production can get really bad.

    Never gonna get gigabyte uploads.


Problems
Php makes you look elsewhere.




Problems
If only we could stream...
If only we could stream...
Deal with things bucket by bucket

   and you don’t need all that memory.




Streaming
write that files to disk as it comes in

         ...or stream it off to s3!




Streaming
var formidable = require('formidable');
var http = require('http');

http.createServer(function(req, res) {
  if (req.url == '/upload' && req.method == 'POST') {

    var form = new formidable.IncomingForm();
    form.parse(req);
    form.onPart = function(part) {
        part.addListener('data', function(chunk) {
            // Do cool stuff, like streaming!
            console.log(chunk.toString('utf8'));
        });
    };
  }
}).listen(80);
_changes
A persistent connection to your database,
 which feeds you new data when it has some.




_changes
it’s amazing




_changes
1. Map uploads to s3

      2. Save a record to CouchDB

  3. “Downloader” listens for new maps



MapBox uploads
node.js process

    very long-lived http connection

             to CouchDB



MapBox uploads
non-blocking I/O & single event loop




Everything is different
4. Package Management
Package management for Drupal




drush make
d.o - project namespace

     d.o - inclusive project policy




drush make
a way to stay sane.




drush make
...and is part of drush proper now!




drush make
But I’d been using Drupal for YEARS by then




drush make
pear
PHP Extension and Application Repository




pear
high threshold for new projects




pear
wildly inclusive

         awesomely useful

        awesomely successful



imagine if pear was...
wildly inclusive

       awesomely useful

      awesomely successful



npm
node package manager




npm
pear: 584

     d.o: 15, 296 (~3,600 for D7)

      npm: 7,976 (2 years old!)



packages
{
    "author": "Jeff Miccolis <jeff@miccolis.net>",
    "name": "portal",
    "description": "Data Catalog",
    "version": "0.0.0",
    "engines": {
       "node": "~v0.6.6"
    },
    "dependencies": {
       "couchapp": "https://github.com/.../attachment_operators",
       "underscore": "= 1.2.0",
       "request": "= 2.1.1"
    }
}


    npm - package.json
you’ll love it.




npm
5. Nice hammer
“Javascript, really?”




Nice hammer...
“Clearly he’s overly excited about this async stuff”




Nice hammer...
“...and thinks it’ll work for everything.”




Nice hammer...
“Do it with Drupal”, eh?
computationally heavy tasks
             databases




node.js is bad for...
interacting with other services.




node.js is awesome for...
databases, mail servers, web services, web clients..




services like...
http://substack.net/posts/b96642

http://blog.nelhage.com/2012/03/why-node-js-is-cool/




Other people’s words
“The primary focus of most node modules is on
using, not extending... A big part of what makes
node modules so great is how they tend to have
really obvious entry points as a consequence of
 focusing on usability and limited surface area”



Limited surface area
“Instead of the http server being an external
 service that we configure to run our code, it
  becomes just another tool in our arsenal”




Callback Austerity
"The upshot of this pressure is that, since
 essentially every node.js library works this way,
   you can pick and choose arbitrary node.js
     libraries and combine them in the same
program, without even having to think about the
             fact that you’re doing so."



Async by default
If nothing else you’ll get better at javascript.




Try it!
But I bet you’ll like it.




Try it!
Thanks!
Photo credit due to these wonderful people who offer
their photos on flickr under a creative commons
license:


Spam - http://www.flickr.com/photos/olivabassa/
Cows - http://www.flickr.com/photos/lynndombrowski/
Dogs - http://www.flickr.com/photos/photosightfaces/
Squid - http://www.flickr.com/photos/laughingsquid/
Ants - http://www.flickr.com/photos/fuzzcat/
Stream - http://www.flickr.com/photos/universalpops/
Boxes - http://www.flickr.com/photos/sillydog/
Pear - http://www.flickr.com/photos/reebob/
Hammer - http://www.flickr.com/photos/kefraya
What did you think?
 Locate this session on the
 DrupalCon Denver website
http://denver2012.drupal.org/program

 Click the “Take the Survey” link.


       Thank You!

Más contenido relacionado

La actualidad más candente

Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejsAmit Thakkar
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming Tom Croucher
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyJoe Kutner
 
Philly Tech Week Introduction to NodeJS
Philly Tech Week Introduction to NodeJSPhilly Tech Week Introduction to NodeJS
Philly Tech Week Introduction to NodeJSRoss Kukulinski
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...Tom Croucher
 
Non-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsNon-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsMarcus Frödin
 
Node.js Explained
Node.js ExplainedNode.js Explained
Node.js ExplainedJeff Kunkle
 
Node.js Workshop - Sela SDP 2015
Node.js Workshop  - Sela SDP 2015Node.js Workshop  - Sela SDP 2015
Node.js Workshop - Sela SDP 2015Nir Noy
 
Caching Up and Down the Stack
Caching Up and Down the StackCaching Up and Down the Stack
Caching Up and Down the StackDan Kuebrich
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialTom Croucher
 
Alternative Infrastucture
Alternative InfrastuctureAlternative Infrastucture
Alternative InfrastuctureMarc Seeger
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.Mike Brevoort
 
Not Only Drupal
Not Only DrupalNot Only Drupal
Not Only Drupalmcantelon
 
PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.DECK36
 
distributed tracing in 5 minutes
distributed tracing in 5 minutesdistributed tracing in 5 minutes
distributed tracing in 5 minutesDan Kuebrich
 
Kubernetes in 20 minutes - HDE Monthly Technical Session 24
Kubernetes in 20 minutes - HDE Monthly Technical Session 24Kubernetes in 20 minutes - HDE Monthly Technical Session 24
Kubernetes in 20 minutes - HDE Monthly Technical Session 24lestrrat
 

La actualidad más candente (20)

Java script at backend nodejs
Java script at backend   nodejsJava script at backend   nodejs
Java script at backend nodejs
 
Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming  Node.js and How JavaScript is Changing Server Programming
Node.js and How JavaScript is Changing Server Programming
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRuby
 
Philly Tech Week Introduction to NodeJS
Philly Tech Week Introduction to NodeJSPhilly Tech Week Introduction to NodeJS
Philly Tech Week Introduction to NodeJS
 
A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...A language for the Internet: Why JavaScript and Node.js is right for Internet...
A language for the Internet: Why JavaScript and Node.js is right for Internet...
 
Non-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.jsNon-blocking I/O, Event loops and node.js
Non-blocking I/O, Event loops and node.js
 
Nodejs in Production
Nodejs in ProductionNodejs in Production
Nodejs in Production
 
Node.js Explained
Node.js ExplainedNode.js Explained
Node.js Explained
 
NodeJS
NodeJSNodeJS
NodeJS
 
Node.js Workshop - Sela SDP 2015
Node.js Workshop  - Sela SDP 2015Node.js Workshop  - Sela SDP 2015
Node.js Workshop - Sela SDP 2015
 
Apache Zookeeper
Apache ZookeeperApache Zookeeper
Apache Zookeeper
 
Caching Up and Down the Stack
Caching Up and Down the StackCaching Up and Down the Stack
Caching Up and Down the Stack
 
OSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js TutorialOSCON 2011 - Node.js Tutorial
OSCON 2011 - Node.js Tutorial
 
Alternative Infrastucture
Alternative InfrastuctureAlternative Infrastucture
Alternative Infrastucture
 
Node.js - async for the rest of us.
Node.js - async for the rest of us.Node.js - async for the rest of us.
Node.js - async for the rest of us.
 
Not Only Drupal
Not Only DrupalNot Only Drupal
Not Only Drupal
 
Node.js
Node.jsNode.js
Node.js
 
PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.PHP Backends for Real-Time User Interaction using Apache Storm.
PHP Backends for Real-Time User Interaction using Apache Storm.
 
distributed tracing in 5 minutes
distributed tracing in 5 minutesdistributed tracing in 5 minutes
distributed tracing in 5 minutes
 
Kubernetes in 20 minutes - HDE Monthly Technical Session 24
Kubernetes in 20 minutes - HDE Monthly Technical Session 24Kubernetes in 20 minutes - HDE Monthly Technical Session 24
Kubernetes in 20 minutes - HDE Monthly Technical Session 24
 

Destacado

Material Enviado A Montana
Material Enviado A MontanaMaterial Enviado A Montana
Material Enviado A Montanaigemontana
 
Birth & After Birth
Birth & After BirthBirth & After Birth
Birth & After Birthyoshio121
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouJohn Pape
 
Blewis Session 3 Automating Your Windows 7 Deployment With The Mdt 2010 Pres...
Blewis  Session 3 Automating Your Windows 7 Deployment With The Mdt 2010 Pres...Blewis  Session 3 Automating Your Windows 7 Deployment With The Mdt 2010 Pres...
Blewis Session 3 Automating Your Windows 7 Deployment With The Mdt 2010 Pres...Brian Lewis
 
Employer Health Asset Mgt Roadmap
Employer Health Asset Mgt RoadmapEmployer Health Asset Mgt Roadmap
Employer Health Asset Mgt RoadmapRob White
 
Blewis Session 1 Fy10 Q3 Azure
Blewis  Session 1 Fy10 Q3 AzureBlewis  Session 1 Fy10 Q3 Azure
Blewis Session 1 Fy10 Q3 AzureBrian Lewis
 
The Truth About Prevention
The Truth About PreventionThe Truth About Prevention
The Truth About PreventionRob White
 
Interdisciplinary Science Biosphere Student Document
Interdisciplinary Science Biosphere Student DocumentInterdisciplinary Science Biosphere Student Document
Interdisciplinary Science Biosphere Student DocumentSkills for Scientists
 
Apex Apparel Power Point
Apex Apparel Power PointApex Apparel Power Point
Apex Apparel Power Pointbrittbenditz
 
Understanding mechanisms underlying human gene expression variation with RNA ...
Understanding mechanisms underlying human gene expression variation with RNA ...Understanding mechanisms underlying human gene expression variation with RNA ...
Understanding mechanisms underlying human gene expression variation with RNA ...Joseph Pickrell
 
Tax Efficient Investing For Life
Tax Efficient Investing For LifeTax Efficient Investing For Life
Tax Efficient Investing For Lifeguesta5e2f9
 
E Research Chapter 1
E Research Chapter 1E Research Chapter 1
E Research Chapter 1guest2426e1d
 

Destacado (20)

Material Enviado A Montana
Material Enviado A MontanaMaterial Enviado A Montana
Material Enviado A Montana
 
Birth & After Birth
Birth & After BirthBirth & After Birth
Birth & After Birth
 
What Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell YouWhat Your Jvm Has Been Trying To Tell You
What Your Jvm Has Been Trying To Tell You
 
Making the Most of Social Media: 7 Lessons from Successful Cities
Making the Most of Social Media: 7 Lessons from Successful CitiesMaking the Most of Social Media: 7 Lessons from Successful Cities
Making the Most of Social Media: 7 Lessons from Successful Cities
 
Blewis Session 3 Automating Your Windows 7 Deployment With The Mdt 2010 Pres...
Blewis  Session 3 Automating Your Windows 7 Deployment With The Mdt 2010 Pres...Blewis  Session 3 Automating Your Windows 7 Deployment With The Mdt 2010 Pres...
Blewis Session 3 Automating Your Windows 7 Deployment With The Mdt 2010 Pres...
 
Employer Health Asset Mgt Roadmap
Employer Health Asset Mgt RoadmapEmployer Health Asset Mgt Roadmap
Employer Health Asset Mgt Roadmap
 
Blewis Session 1 Fy10 Q3 Azure
Blewis  Session 1 Fy10 Q3 AzureBlewis  Session 1 Fy10 Q3 Azure
Blewis Session 1 Fy10 Q3 Azure
 
The Truth About Prevention
The Truth About PreventionThe Truth About Prevention
The Truth About Prevention
 
Money laundering
Money laundering Money laundering
Money laundering
 
Interdisciplinary Science Biosphere Student Document
Interdisciplinary Science Biosphere Student DocumentInterdisciplinary Science Biosphere Student Document
Interdisciplinary Science Biosphere Student Document
 
Ncm
NcmNcm
Ncm
 
Apex Apparel Power Point
Apex Apparel Power PointApex Apparel Power Point
Apex Apparel Power Point
 
Designs
DesignsDesigns
Designs
 
سپاس
سپاسسپاس
سپاس
 
New Rules of Successful Job Hunting
New Rules of Successful Job Hunting New Rules of Successful Job Hunting
New Rules of Successful Job Hunting
 
Understanding mechanisms underlying human gene expression variation with RNA ...
Understanding mechanisms underlying human gene expression variation with RNA ...Understanding mechanisms underlying human gene expression variation with RNA ...
Understanding mechanisms underlying human gene expression variation with RNA ...
 
Sepas
SepasSepas
Sepas
 
Tax Efficient Investing For Life
Tax Efficient Investing For LifeTax Efficient Investing For Life
Tax Efficient Investing For Life
 
E Research Chapter 1
E Research Chapter 1E Research Chapter 1
E Research Chapter 1
 
Trela(2)
Trela(2)Trela(2)
Trela(2)
 

Similar a node.js, javascript and the future

Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkAarti Parikh
 
PuppetDB: Sneaking Clojure into Operations
PuppetDB: Sneaking Clojure into OperationsPuppetDB: Sneaking Clojure into Operations
PuppetDB: Sneaking Clojure into Operationsgrim_radical
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevFelix Geisendörfer
 
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...bobmcwhirter
 
Golang Performance : microbenchmarks, profilers, and a war story
Golang Performance : microbenchmarks, profilers, and a war storyGolang Performance : microbenchmarks, profilers, and a war story
Golang Performance : microbenchmarks, profilers, and a war storyAerospike
 
Synchronous Reads Asynchronous Writes RubyConf 2009
Synchronous Reads Asynchronous Writes RubyConf 2009Synchronous Reads Asynchronous Writes RubyConf 2009
Synchronous Reads Asynchronous Writes RubyConf 2009pauldix
 
Node.js: The What, The How and The When
Node.js: The What, The How and The WhenNode.js: The What, The How and The When
Node.js: The What, The How and The WhenFITC
 
Apache Spark Workshop, Apr. 2016, Euangelos Linardos
Apache Spark Workshop, Apr. 2016, Euangelos LinardosApache Spark Workshop, Apr. 2016, Euangelos Linardos
Apache Spark Workshop, Apr. 2016, Euangelos LinardosEuangelos Linardos
 
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Zabbix
 
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...apidays
 
Node.js: A Guided Tour
Node.js: A Guided TourNode.js: A Guided Tour
Node.js: A Guided Tourcacois
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
GWT is Smarter Than You
GWT is Smarter Than YouGWT is Smarter Than You
GWT is Smarter Than YouRobert Cooper
 
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...BigDataCloud
 
Regex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language InsteadRegex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language InsteadAll Things Open
 
Using RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdfUsing RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdfRichard Rodger
 
Advanced off heap ipc
Advanced off heap ipcAdvanced off heap ipc
Advanced off heap ipcPeter Lawrey
 
SD, a P2P bug tracking system
SD, a P2P bug tracking systemSD, a P2P bug tracking system
SD, a P2P bug tracking systemJesse Vincent
 

Similar a node.js, javascript and the future (20)

Original slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talkOriginal slides from Ryan Dahl's NodeJs intro talk
Original slides from Ryan Dahl's NodeJs intro talk
 
PuppetDB: Sneaking Clojure into Operations
PuppetDB: Sneaking Clojure into OperationsPuppetDB: Sneaking Clojure into Operations
PuppetDB: Sneaking Clojure into Operations
 
Nodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredevNodejs a-practical-introduction-oredev
Nodejs a-practical-introduction-oredev
 
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
 
Golang Performance : microbenchmarks, profilers, and a war story
Golang Performance : microbenchmarks, profilers, and a war storyGolang Performance : microbenchmarks, profilers, and a war story
Golang Performance : microbenchmarks, profilers, and a war story
 
Synchronous Reads Asynchronous Writes RubyConf 2009
Synchronous Reads Asynchronous Writes RubyConf 2009Synchronous Reads Asynchronous Writes RubyConf 2009
Synchronous Reads Asynchronous Writes RubyConf 2009
 
Django at Scale
Django at ScaleDjango at Scale
Django at Scale
 
Node.js: The What, The How and The When
Node.js: The What, The How and The WhenNode.js: The What, The How and The When
Node.js: The What, The How and The When
 
Apache Spark Workshop, Apr. 2016, Euangelos Linardos
Apache Spark Workshop, Apr. 2016, Euangelos LinardosApache Spark Workshop, Apr. 2016, Euangelos Linardos
Apache Spark Workshop, Apr. 2016, Euangelos Linardos
 
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
Erik Skytthe - Monitoring Mesos, Docker, Containers with Zabbix | ZabConf2016
 
All of Javascript
All of JavascriptAll of Javascript
All of Javascript
 
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
Apidays Paris 2023 - Forget TypeScript, Choose Rust to build Robust, Fast and...
 
Node.js: A Guided Tour
Node.js: A Guided TourNode.js: A Guided Tour
Node.js: A Guided Tour
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
GWT is Smarter Than You
GWT is Smarter Than YouGWT is Smarter Than You
GWT is Smarter Than You
 
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...
BigDataCloud meetup - July 8th - Cost effective big-data processing using Ama...
 
Regex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language InsteadRegex Considered Harmful: Use Rosie Pattern Language Instead
Regex Considered Harmful: Use Rosie Pattern Language Instead
 
Using RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdfUsing RAG to create your own Podcast conversations.pdf
Using RAG to create your own Podcast conversations.pdf
 
Advanced off heap ipc
Advanced off heap ipcAdvanced off heap ipc
Advanced off heap ipc
 
SD, a P2P bug tracking system
SD, a P2P bug tracking systemSD, a P2P bug tracking system
SD, a P2P bug tracking system
 

Último

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistandanishmna97
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...apidays
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityWSO2
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Orbitshub
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Zilliz
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Bhuvaneswari Subramani
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxRustici Software
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesrafiqahmad00786416
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 

Último (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 

node.js, javascript and the future