SlideShare ist ein Scribd-Unternehmen logo
1 von 38
Downloaden Sie, um offline zu lesen
erlang at hover.in
    5 Choices to rule them all


      Bhasker V Kode
      co­founder  & CTO at hover.in

      at Commercial Users of Functional Programming 2009, 
      Edinburgh
                               
      September 4th, 2009                      http://developers.hover.in
#1. serial vs parallel




                    

                             http://developers.hover.in
“The domino effect is a chain reaction 
    that occurs when a small change 
    causes a similar change nearby, which 
    then will cause another similar change.”

           via wikipedia page on Domino Effect


                         

                                    http://developers.hover.in
small change causes a similar 
    change nearby

    similiar change causes 
    another similar change.

    domino effect  is a chain 
    reaction caused by a small 
    change.


                   

                          http://developers.hover.in
% Or functionally speaking in erlang!
small_change(Changes)­>
   similar_change(Changes).

similiar_change([NearBy|Rest])­> 
  chain_reaction(NearBy),
  similar_change(Rest);

similiar_change( [] ) ­>
  “domino effect”.

chain_reaction(NearBy)­>
  “wow”.
                   

                            http://developers.hover.in
(1)wrt flowcontrol...
    ●
        great to handle both bursts or silent traffic & to 
        determine bottlenecks.(eg ur own,rabbitmq,etc )
    ●
        eg1: when we addjobs to the queue, if it takes 
        greater than X consistently we move it to high 
        traffic bracket, do things differently, possibly 
        add workers  or ignore based on the task.
    ●
        eg2: amazon shopping carts, are known to be 
        extra resilient to write failures, (dont mind 
 
        multiple versions of them over time) http://developers.hover.in
                                   
wrt parallel computing...




“the small portions of the program which cannot be 
parallelized will limit the overall speed­up available ”
                                                  ­  _____ 's Law ?

                                    

                                                     http://developers.hover.in
wrt parallel computing...




“the small portions of the program which cannot be 
parallelized will limit the overall speed­up available ”
                                     ­ Amdahl's Law

                              

                                             http://developers.hover.in
A's and B's that we've faced at hover.in : 
    ●
        url hit counters (B), priority queue based crawling(A)
    ●
        writes to create index (B), search's to create inverted 
        index (A)
    ●
        dumping text files (B), loading them to backend (A)
    ●
        all ^ shared one common method to boost 
 
        performance – seperate flowcontrols for A,B
                                

                                                http://developers.hover.in
Further , A & B need'nt be serial, but a batch of A's & a parallel 
batch of B's running tasks serially. Flowcontrol implemented by 
tail­recursive servers handling bursty AND slow traffic well. 
     flowcontrol 1             flowcontrol 2
                                                  where                is 
                                                  free cpu / time for 
                                                  handling 2x B 
                                                  tasks
                                  

                                                  http://developers.hover.in
#2. distributed vs local




                   

                           http://developers.hover.in
in this uber­cool demo, I “node1” split this trivial task to 
the other 1000 nodes. this will be done in no time. Ha!


                            Node1




 Node2         Node3                                     NodeN




                                  

                                                  http://developers.hover.in
in this uber­cool demo, I “node2” ALSO split this trivial 
task to the other 1000 nodes. Ha!


                           Node1




 Node2        Node3                                    NodeN

in this uber­cool demo, I “nodeN” ALSO split this trivial 
task to the other 1000 nodes.  Ha! 
                                

                                                http://developers.hover.in
in other words...
●
   will none of the other N nodes behave as a master?
●
   won't most your calls be rpc if several nodes try to 
be masters and ping every other node ?
●
   would you prefer a distributed non­master setup?
●
   would you rather load­balance the jobs where each 
node does what it must do, and does only those jobs ( 
unless failover)
●
   would you prefer send the task where the data is , 
rather than one master node accessing all ?
 
      ●
         all personal choices at the end of the day...
                               

                                          http://developers.hover.in
how it works at hover.in: 
I , “node X” will rather do tasks locally since this data is 
designated to me, rather than rpc'ing all over like crazy ! 
The meta­data of which node does what calculated by 
(a) statically assigned (our choice)     (b) or a hash fn 
(c) dynamically reassigned (maybe later)
which is made available to nodes by
(a) replication or (b) location transparency (our choice)



  Node1       Node2                                  NodeN

                               

                                              http://developers.hover.in
#3. replication vs location 
    transparency




                   

                            http://developers.hover.in
some questons ...
1. replicated on nodes defined by hash function / 
consistent hashing,etc  or statically assigned ?
2. data served from in­memory or completely from disk 
or a combination of both ( LRU cache, etc)?
3. are some instances dedicated readers / writers 
4. transactions or no transactions
fortunately erlang/otp/mnesia makes it easy to make 
highly granular decissions
5. bulk load the data or not (based on your  
requirements , testing, preferences )
6. run mapreduce / fold over data ? ( js in couchdb, or 
lua with tokyocabinet )
                              

                                            http://developers.hover.in
#4. persistent data vs cyclic queues




                   

                           http://developers.hover.in
       to persist or not to persist...
●
   fixed length stores OR round­robin databases OR 
cyclic queues are an attractive option           NEW!

●
     great for recission , cutting costs ! just overwrite data
●
     speedier search's with predictable processing times!
●
     more realtime, since data flushed based on FIFO
●
     but risky if you don't have sufficient data
●
     but pro's mostly outdo cons!
●
    easy to store/distribute as in­memory data structures 
●
     useful for more buzz­analytics, trend detection, etc 
that works real­time with less overheads
                                  

                                               http://developers.hover.in
#5. in­memory vs disk




                  

                            http://developers.hover.in
in­memory is the new embedded
    ●
        servers as of '09 typically have 4 ­ 32 GB RAM 
    ●
        several companies adding loads of nodes for 
        primarily in­memory operations, caching, etc
    ●
        caching systems avoid disk/db , for temporal 
        processing tasks makes sense
    ●
        usage of in­memory data structures at hover.in :
        –   in­memory caching system , sets 
        –   LRU cache's, trending topics , debugging, etc 
                                    

                                                  http://developers.hover.in
hi_cache_worker
    ●
        a circular queue implemented via gen_server
    ●
        set ( ID  , Key , Value , OptionsList)
        Options are     {purge, <true| false>}
                                { size , <integer> }
                                { set_callback , <Function> }
                                { delete_callback , <Function> }
                                { get_callback , <Function> }
                                { timeout, <int>, <Function> }
 
        ID is usually a siteid  or  “global”
                                          

                                                   http://developers.hover.in
●
    C = hi_cache_worker,
    C:set ( User1, “recent_saved” , Value) 
    C:set ( “global”, “recent_hits” , Value  
                                      [{size,1000}] ) 

    C:get (“global”,”recent_voted”)
    C:get (User1,”recenthits”)
    C:get (User1,”recent_cron_times”)
●
    ( Note: initially used in debugging internally ­> 
    then reporting ­> next in public community stats)
                                

                                                    http://developers.hover.in
7 rules of in­memory capacity planning
    (1) shard thy data to make it sufficiently un­related
    (2) implementing flowcontrol
    (3) all data is important, but some less important
    (4) time spent x RAM utilization = a constant
    (5) before every succesful persistent write & after 
      every succesful persistent read is an in­memory one
    (6) know thy RAM, trial/error to find ideal dataload
    (7) what cannot be measured cannot be improved
                              

                                                http://developers.hover.in
➔
        hover.in founded late 2007 
    ➔
        the web ~ 10­ 20 years old 
    ➔
        humans 100's of thousands of years 
    ➔
        but bacteria.... around for millions of years
        ... so this talk is going to be about what we can 
        learn from bacteria, the brain, and memory in 
        a concurrent world followed by hover.in's erlang 
        setup and lessons learnt 

                                              http://developers.hover.in
some traits of bacteria
    ●
        each bacteria cell spawns its own proteins
    ●
        All bacteria have some sort of  some presence 
        & replies associated, (asynchronous comm.)
    ●
        group dynamics exhibits 'list fold' ish operation
    ●
        only when the Accumulator is > some guard 
        clause, will group­dynamics of making light 
        (bioluminiscence) work (eg: in deep sea)
                                 

                                              http://developers.hover.in
supervisors, workers
    ●
        as bacteria grow, they split into two. when 
        muscle tears, it knows exactly what to replace.
    ●
        erlang supervisors can decide restart policies: if 
        one worker fails, restart all .... or if one worker 
        fails, restart just that worker, more tweaks.
    ●
        can spawn multiple workers on the fly, much 
        like the need for launching a new ec2 instant

                                 

                                              http://developers.hover.in
supervisors, workers
    ●
        as bacteria grow, they split into two. when 
        muscle tears, it knows exactly what to replace.
    ●
        erlang supervisors can decide restart policies: if 
        one worker fails, restart all .... or if one worker 
        fails, restart just that worker, more tweaks.
    ●
        can spawn multiple workers on the fly, much 
        like the need for launching a new ec2 instant

                                 

                                              http://developers.hover.in
inter­species communication
    ●
        if you look at your skin – consists of very many 
        different species, but all bacteria found to 
        communicate using one common chemical 
        language. 




                                

                                             http://developers.hover.in
inter­species communication
    ●
        if you look at your skin – consists of very many 
        different species, but all bacteria found to 
        communicate using one common chemical 
        language. 
        hmmmmmmmmmmmmmmmmmmm..............
        ....serialization ?!
        ....a common protein interpretor ?!
        ....or perhaps just­in­time protein compilation?!
                                

                                             http://developers.hover.in
interspecies comm. in practice
    ➔
        attempts at serialization , cross language 
        communication include:
        ➔
            thrift ( by facebook) 
        ➔
            protocol buffers ( by google) 
        ➔
            en/decoding , port based communication ( erlang<­
            >python at hover.in )
        ➔
            rabbitMQ shows speeds of several thousands of  
            msgs/sec between python <­> erlang (by using...?)
                                      

                                                 http://developers.hover.in
talking about scaling
    The brain of the worker honeybee weighs about 
     1mg ( ~ 950,000 neurons )
    ●
        Flies acrobatically , recognizes patterns, 
        navigates , communicates, etc
    ●
        Energy consumption: 10−15 J/op, at least 106 
        more efficient than digital silicon neurons 


                                

                                              http://developers.hover.in
the human brain
    ●
        100 billion neurons, stores ~100 TB
    ●
        Differential analysis e.g., we compute color
    ●
        Multiple inputs: sight, sound, taste, smell, touch
    ●
        Facial recognition subcircuits, peripheral vision
    ●
        in essence  ­ the left & right brain vary in:
        left ­> persistent disk , handles past/future
        right ­> temporal caches! , handles present
                                 

                                              http://developers.hover.in
summary of tech at hover.in
    ●
        LYME stack since ~dec 07 , 4 nodes (64­bit 4GB )
    ●
        python crawler,  associated NLP parsers, index's 
        now in tokyo cabinet , inverted index's in erlang 's 
        mnesia db,cpu time­splicing algo's for cron's app, 
        priority queue's for heat­seeking algo's app, 
        flowcontrol, caching, pagination apps, remote node 
        debugger, cyclic queue workers, headless­firefox 
        for thumbnails 
    ●
        touched 1 million hovers/month in May'09 after 
        launching closed beta to publishers in Jan 09
                                 

                                               http://developers.hover.in
brief introduction to hover.in
    choose words from your blog, & decide what content / ad 
              you want when you hover* over it
                                           * or other events like click,right click,etc
                                     or...
                the worlds first user­engagement
          platform for brands via in­text broadcasting
                                 or
lets web publishers push client­side event handling to the 
  cloud, to run various rich applications called hoverlets

demo at http://start.hover.in/ and  http://hover.in/demo
          more at http://hover.in ,  http://developers.hover.in/blog/ 
                                        

                                                                 http://developers.hover.in
summary of our erlang modules
  rewrites.erl error.erl frag_mnesia.erl hi_api_response.erl   hi_appmods_api_user.erl  
      hi_cache_app.erl , hi_cache_sup.erl   hoverlingo.erl hi_cache_worker.erl 
     hi_lru_worker.erl  hi_classes.erl  hi_community.erl 
     hi_cron_hoverletupdater_app.erl  hi_cron_hoverletupdater.erl 
     hi_cron_hoverletupdater_sup.erl  hi_cron_kwebucket.erl hi_cron_kweload.erl  
     hi_crypto.erl hi_daily_stats.erl  hi_flowcontrol_hoverletupdater.erl 
     hi_htmlutils_site.erl hi_hybridq_app.erl hi_hybridq_sup.erl hi_hybridq_worker.erl 
     hi_login.erl hi_mailer.erl hi_messaging_app.erl hi_messaging_sup.erl 
     hi_messaging_worker.erl hi_mgr_crawler.erl hi_mgr_db_console.erl 
     hi_mgr_db.erl hi_mgr_db_mnesia.erl hi_mgr_hoverlet.erl hi_mgr_kw.erl 
     hi_mgr_node.erl hi_mgr_thumbs.erl hi_mgr_traffic.erl hi_nlp.erl hi_normalizer.erl 
     hi_pagination_app.erl   hi_pagination_sup.erl, hi_pagination_worker.erl 
     hi_pmap.erl  hi_register_app.erl hi_register.erl, hi_register_sup.erl, 
     hi_register_worker.erl hi_render_hoverlet_worker.erl hi_rrd.erl , hi_rrd_worker.erl 
     hi_settings.erl  hi_sid.erl hi_site.erl hi_stat.erl hi_stats_distribution.erl 
     hi_stats_overview.erl hi_str.erl hi_trees.erl hi_utf8.erl hi_yaws.erl  
                                                 
     & medici src ( erlang tokyo cabinet / tyrant client )
                                                                   http://developers.hover.in
thank you




     

           http://developers.hover.in
references
    ●
        All images courtesy Creative Commons­licensed content for 
        commercial use, adaptation, modification or building upon from Flickr
    ●
        http://erlang.org  , wikipedia articles on Parallel computing
    ●
        amazing brain­related talks at   http://ted.com ,
    ●
        go read more about the brain, and hack on erlang NOW!
    ●
        shoutout to everyone at #erlang ! 
    ●
        get in touch with us on our dev blog http://developers.hover.in , on 
        twitter @hoverin, or mail me at kode at hover dot in.



                                           

                                                               http://developers.hover.in

Weitere ähnliche Inhalte

Was ist angesagt?

SD, a P2P bug tracking system
SD, a P2P bug tracking systemSD, a P2P bug tracking system
SD, a P2P bug tracking system
Jesse Vincent
 
Concurrency in Python
Concurrency in PythonConcurrency in Python
Concurrency in Python
Gavin Roy
 
Packaging is the Worst Way to Distribute Software, Except for Everything Else
Packaging is the Worst Way to Distribute Software, Except for Everything ElsePackaging is the Worst Way to Distribute Software, Except for Everything Else
Packaging is the Worst Way to Distribute Software, Except for Everything Else
mckern
 
Cooking a rabbit pie
Cooking a rabbit pieCooking a rabbit pie
Cooking a rabbit pie
Tomas Doran
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
goccy
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Kyle Drake
 

Was ist angesagt? (20)

Spacebrew @ SFPC
Spacebrew @ SFPCSpacebrew @ SFPC
Spacebrew @ SFPC
 
Message-passing concurrency in Python
Message-passing concurrency in PythonMessage-passing concurrency in Python
Message-passing concurrency in Python
 
Ice Age melting down: Intel features considered usefull!
Ice Age melting down: Intel features considered usefull!Ice Age melting down: Intel features considered usefull!
Ice Age melting down: Intel features considered usefull!
 
Defcon 21-caceres-massive-attacks-with-distributed-computing by pseudor00t
Defcon 21-caceres-massive-attacks-with-distributed-computing by pseudor00tDefcon 21-caceres-massive-attacks-with-distributed-computing by pseudor00t
Defcon 21-caceres-massive-attacks-with-distributed-computing by pseudor00t
 
SD, a P2P bug tracking system
SD, a P2P bug tracking systemSD, a P2P bug tracking system
SD, a P2P bug tracking system
 
Exploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinarExploring .NET memory management - JetBrains webinar
Exploring .NET memory management - JetBrains webinar
 
Concurrency in Python
Concurrency in PythonConcurrency in Python
Concurrency in Python
 
Packaging is the Worst Way to Distribute Software, Except for Everything Else
Packaging is the Worst Way to Distribute Software, Except for Everything ElsePackaging is the Worst Way to Distribute Software, Except for Everything Else
Packaging is the Worst Way to Distribute Software, Except for Everything Else
 
erlang at hover.in , Devcamp Blr 09
erlang at hover.in , Devcamp Blr 09erlang at hover.in , Devcamp Blr 09
erlang at hover.in , Devcamp Blr 09
 
Cooking a rabbit pie
Cooking a rabbit pieCooking a rabbit pie
Cooking a rabbit pie
 
Ruby 1.9 Fibers
Ruby 1.9 FibersRuby 1.9 Fibers
Ruby 1.9 Fibers
 
Perl-Critic
Perl-CriticPerl-Critic
Perl-Critic
 
LuaJIT
LuaJITLuaJIT
LuaJIT
 
Python 3.5: An agile, general-purpose development language.
Python 3.5: An agile, general-purpose development language.Python 3.5: An agile, general-purpose development language.
Python 3.5: An agile, general-purpose development language.
 
Version Control for Mere Mortals
Version Control for Mere MortalsVersion Control for Mere Mortals
Version Control for Mere Mortals
 
Repeating History...On Purpose...with Elixir
Repeating History...On Purpose...with ElixirRepeating History...On Purpose...with Elixir
Repeating History...On Purpose...with Elixir
 
Is Python still production ready ? Ludovic Gasc
Is Python still production ready ? Ludovic GascIs Python still production ready ? Ludovic Gasc
Is Python still production ready ? Ludovic Gasc
 
Puppet for SysAdmins
Puppet for SysAdminsPuppet for SysAdmins
Puppet for SysAdmins
 
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
 

Ähnlich wie hover.in at CUFP 2009

[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler Collection[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler Collection
Moabi.com
 
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
OpenNebula Project
 
A Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and ContainersA Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and Containers
Docker, Inc.
 

Ähnlich wie hover.in at CUFP 2009 (20)

thinking in key value stores
thinking in key value storesthinking in key value stores
thinking in key value stores
 
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
Docker 1 0 1 0 1: a Docker introduction, actualized for the stable release of...
 
[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler Collection[Defcon24] Introduction to the Witchcraft Compiler Collection
[Defcon24] Introduction to the Witchcraft Compiler Collection
 
Making clouds: turning opennebula into a product
Making clouds: turning opennebula into a productMaking clouds: turning opennebula into a product
Making clouds: turning opennebula into a product
 
Making Clouds: Turning OpenNebula into a Product
Making Clouds: Turning OpenNebula into a ProductMaking Clouds: Turning OpenNebula into a Product
Making Clouds: Turning OpenNebula into a Product
 
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
OpenNebulaConf 2013 - Making Clouds: Turning OpenNebula into a Product by Car...
 
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE PlatformsFIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
FIWARE Tech Summit - Docker Swarm Secrets for Creating Great FIWARE Platforms
 
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
OpenNebulaConf 2016 - Measuring and tuning VM performance by Boyan Krosnov, S...
 
Docker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platformsDocker Swarm secrets for creating great FIWARE platforms
Docker Swarm secrets for creating great FIWARE platforms
 
A Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and ContainersA Gentle Introduction to Docker and Containers
A Gentle Introduction to Docker and Containers
 
Flow Base Programming with Node-RED and Functional Reactive Programming with ...
Flow Base Programming with Node-RED and Functional Reactive Programming with ...Flow Base Programming with Node-RED and Functional Reactive Programming with ...
Flow Base Programming with Node-RED and Functional Reactive Programming with ...
 
Peyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_futurePeyton jones-2011-parallel haskell-the_future
Peyton jones-2011-parallel haskell-the_future
 
Simon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelismSimon Peyton Jones: Managing parallelism
Simon Peyton Jones: Managing parallelism
 
Cassandra and Docker Lessons Learned
Cassandra and Docker Lessons LearnedCassandra and Docker Lessons Learned
Cassandra and Docker Lessons Learned
 
Demystifying kubernetes
Demystifying kubernetesDemystifying kubernetes
Demystifying kubernetes
 
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...Why everyone is excited about Docker (and you should too...) -  Carlo Bonamic...
Why everyone is excited about Docker (and you should too...) - Carlo Bonamic...
 
The Lies We Tell Our Code (#seascale 2015 04-22)
The Lies We Tell Our Code (#seascale 2015 04-22)The Lies We Tell Our Code (#seascale 2015 04-22)
The Lies We Tell Our Code (#seascale 2015 04-22)
 
Docker serverless v1.0
Docker serverless v1.0Docker serverless v1.0
Docker serverless v1.0
 
Dev Ops without the Ops
Dev Ops without the OpsDev Ops without the Ops
Dev Ops without the Ops
 
codemotion-docker-2014
codemotion-docker-2014codemotion-docker-2014
codemotion-docker-2014
 

Kürzlich hochgeladen

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
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
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
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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...
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
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
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 

hover.in at CUFP 2009