SlideShare una empresa de Scribd logo
1 de 86
Descargar para leer sin conexión
Playing with the web
 or “The geek shall inherit the earth”




 Christian Heilmann | http://wait-till-i.com | http://twitter.com/codepo8

                 Geek Meet Stockholm, December 2008
The web is an awesome
opportunity and media.
I learnt that pretty early and
left an old media to work for
         the new one.
One thing that keeps amazing
me about it is how simple the
 technologies driving it are.
You don’t
need to be a
rocket
scientist to
wreak havoc
on the web.
I am not talking about
malicious intent here.
I am talking about ethical
         hacking.
So today I am going to show
 some tools I love to use to
play and mess with the web.
Disrupting the process to
foster and drive innovation.



                      Mr. Buzzword
                     will see you now!
Let’s start with the first one –
  a true Swedish product!
Playing With The Web
Their product?
cURL
cURL allows you to get raw
text data from any server.
You can create the full range
of HTTP requests from a script
         or the shell.
Including POST requests,
simulating cookies and all the
       other goodies :)
Which gives you an amazing
     amount of power
Say you want to build an API
     that doesn’t exist.
At
       Mashed08 I
       got bored.



http://www.flickr.com/photos/37996583811@N01/2600265124/
Someone came to me and
asked if I knew of a currency
      conversion API.
And I didn’t as there is none.
        (everybody pays good money for that data)
So I went to Yahoo Finance.
http://finance.yahoo.com/currency/convert?
 amt=1&from=USD&to=JPY&submit=Convert
Simple, predictable URL :)
I found the location of the
result by viewing the source
         of the page.
function convert($from,$to){
   $url= 'http://finance.yahoo.com/currency/convert?
 amt=1&from='.$from.'&to='.$to.'&submit=Convert';
   $ch = curl_init();
   curl_setopt($ch, CURLOPT_URL, $url);
   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
   $feed = curl_exec($ch);
   curl_close($ch);
   preg_match_all(quot;/tabledata1quot;>([^<]+)</td>/quot;,
                  $feed,$cells);
   return $cells[1][1];
 }
 echo convert(’USD’,'GBP’);


http://www.wait-till-i.com/2008/06/21/currency-
               conversion-api/
Turning this into an API was
           easy:
header('Content-type:text/javascript');
$from = $_GET['from'];
$to = $_GET['to'];
$callback = $_GET['callback'];
if(preg_match(quot;/[A-Z|a-z]{3}/quot;,$to) &&
preg_match(quot;/[A-Z|a-z]{3}/quot;,$from)){
  $to = strToUpper($to);
  $from = strToUpper($from);
  $url= ‘http://finance.yahoo.com/currency/
convert?’ .
        ‘amt=1&from=’.$from.’&to=’.
$to.’&submit=Convert’;
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,
1);
  $feed = curl_exec($ch);
  curl_close($ch);
preg_match_all(quot;/tabledata1quot;>([^<]+)</
td>/quot;,$feed,$cells);
  if(is_numeric($cells[1][1])){
    $out = ‘{quot;fromquot;:quot;’.$from.’quot;,quot;toquot;:quot;’.
$to.’quot;,quot;factorquot;:quot;’.$cells[1][1].’quot;}’;
  } else {
    $out = ‘{quot;errorquot;:quot;Could not convert
currencies, are you sure about the
names?quot;}’;
  }
} else {
  $out = ‘{quot;errorquot;:quot;Invalid Currency format,
must be three lettersquot;}’;
}
if(isset($callback)){
  if(preg_match(quot;/[a-z|A-Z|_|-|$|0-9|.]/quot;,
$callback)){
    $out = $callback.’(’.$out.’)';
} else {
    $out = ‘{quot;errorquot;:quot;Invalid callback
method namequot;}’;
  }
}
echo $out;
Using the API is as easy...
<script type=quot;text/javascriptquot;>
  function converted(obj){
    if(obj.error){
      alert(obj.error);
    } else {
      alert('one ' + obj.from + ' is ' +
             obj.factor + ' ' + obj.to);
    }
  }
</script>
<script type=quot;text/javascriptquot; src=quot;convert.php?
from=gbp&to=usd&callback=convertedquot;>
</script>
View Source is a good start.
However, much more win is
        Firebug.
It has never been easier to
find things to get with cURL.
Say twitter information...
Playing With The Web
How about showing this as a
       cool chart?
We all like to show off what
    we do on the web.
Charts can be tricky...
Playing With The Web
Good thing that there’s
   Google Charts.
        (yeah and YUI charts)
http://www.wait-till-i.com/2008/11/23/show-the-world-your-
         twitter-type-using-php-and-google-charts/
<?php
$user = $_GET['user'];
$isjs = quot;/^[a-z|A-Z|_|-|$|0-9|.]+$/quot;;
if(preg_match($isjs,$user)){
  $info = array();
  $cont = get('http://twitter.com/'.$user);
  preg_match_all('/<span
id=quot;following_countquot; class=quot;stats_count
numericquot;>([^>]+)</span>/msi',$cont,
$follow);
  $info['follower'] = convert($follow[1]
[0]);
  preg_match_all('/<span id=quot;follower_countquot;
class=quot;stats_count numericquot;>([^>]+)</span>/
msi',$cont,$follower);
  $info['followed'] = convert($follower[1]
[0]);
preg_match_all('/<span id=quot;update_countquot;
class=quot;stats_count numericquot;>([^>]+)</span>/
msi',$cont,$updates);
  $info['updater'] = convert($updates[1]
[0]);
  $max = max($info);
  $convert = 100 / $max ;
  foreach($info as $k=>$f){
    if($f === $max){
      $type = $k;
    }
    $disp[$k] = $f * $convert;
  }
  if($type === 'updater'){
    $t = ' is an ';
  }
  if($type === 'follower'){
    $t = ' is a ';
}
  if($type === 'followed'){
    $t = ' is being ';
  }
  $title = $user . $t . $type;
  $out = array();
  foreach($info as $k=>$i){
    $out[] = $k.'+('.$i.')';
  }
  $labels = join($out,'|');
  $values = join($disp,',');
  header('location:http://
chart.apis.google.com/chart?
cht=p3&chco=336699&'.

'chtt='.urlencode($title).'&chd=t:'.$values.
             '&chs=350x100&chl='.$labels);
}
function get($url){
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $url);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER,
1);
  $feed = curl_exec($ch);
  curl_close($ch);
  return $feed;
}
function convert($x){
  $x = str_replace(',','',$x);
  $x = (int)$x;
  return $x;
}
?>
What if you need to mix and
  match and filter data?
http://www.wait-till-i.com/2008/09/28/useful-
            tweets-with-pipe/
https://pipes.yahoo.com/
https://pipes.yahoo.com/
And *dum de dum de*...
http://developer.yahoo.com/yql/console/
/*
  Useful tweets badge by Christian Heilmann
*/
var tweets = function(){
   var x = document.getElementById('mytweet');
   if(x){
      var twitterUserId = x.className.replace('user-','');
      var s = document.createElement('script');
      s.type = 'text/javascript';
      s.src = 'http://pipes.yahoo.com/pipes/pipe.run?' +
      '_id=f7229d01b79e508d543fb84e8a0abb0d&_render=json' +
      '&id=' + twitterUserId + '&_callback=tweets.tweet';
      document.getElementsByTagName('head')[0].appendChild(s);
   };
   function tweet(data){
        if(data && data.value && data.value.items){
            if(typeof data.value.items.length !== 'undefined'){
              var ul = document.createElement('ul');
              var all = data.value.items.length;
              var end = all > 5 ? 5 : all;
              for(var i=0;i < end;i++){
var now = data.value.items[i];
                   var li = document.createElement('li');
                   var a = document.createElement('a');
                   a.href = now.link;
                   a.appendChild(
	   	   	    	   	 document.createTextNode(now.title)
	   	   	    	     );
                   li.appendChild(a);
                   ul.appendChild(li);
                 }
                 x.appendChild(ul);
            }
        }
     };
  return{
     tweet:tweet
  }
}();
One of my favourite toys:
Using GreaseMonkey you can
 change any web page out
    there with DOM and
         JavaScript.
You can for example
prototype an enhancement
and show it to people with a
        single link.
Playing With The Web
Playing With The Web
Playing With The Web
By playing with the web you
 can do jobs that until now
    cost a lot of money.
Say you want to help your
clients find good keywords to
promote their product online.
You can do some research,
surf all the competitors’ sites
      and note down the
 descriptions, keywords and
              titles.
Or you can be a man and use
 cURL to write a script to do
            that.
Or you can be a clever man
and keep your eyes open and
 check if there is an API for
            that.
http://developer.yahoo.com/search/boss/
http://boss.yahooapis.com/ysearch/web/v1/donkeys?
                format=xml&appid=...
http://boss.yahooapis.com/ysearch/web/v1/donkeys?
        format=xml&view=keyterms&appid=...
All you need to do is getting
 the top 20, analyzing the
  keyword frequency and
      create a top 20.
http://developer.yahoo.net/blog/archives/2008/11/
               boss_keywords.html
Then you take YUI CSS grids,
and spend 30 minutes playing
   with colours and fonts.
And you have a
   product:
 http://keywordfinder.org
This is all cool,
but does it
bring us
anywhere?
Yes, if you get excited about
the web and its opportunities
    you can move things.
It takes determination!
Playing With The Web
Playing With The Web
And the outcome can be
rewarding beyond anything
    you ever imagined.
http://www.youtube.com/watch?v=CwsDKaalgq8&
http://www.youtube.com/watch?v=QiuT0y0KR6I
So by all means, put all your
 wonderful products on the
            web.
Especially when they cater a
    very specific need.
The prime number shitting
            bear...
http://alpha61.com/primenumbershittingbear/
And never stop to fiddle,
tweak and poke at the things
people offer you on the web.
So thank you for having me
    here and listening.
And I hope you will have an
   awesome Christmas!




                 Christian Heilmann
http://scriptingenabled.org | http://wait-till-i.com
               twitter/flickr: codepo8

Más contenido relacionado

La actualidad más candente

Acceptance Testing with Webrat
Acceptance Testing with WebratAcceptance Testing with Webrat
Acceptance Testing with WebratLuismi Cavallé
 
Using HTML5 for a great Open Web
Using HTML5 for a great Open WebUsing HTML5 for a great Open Web
Using HTML5 for a great Open WebRobert Nyman
 
Professional web development with libraries
Professional web development with librariesProfessional web development with libraries
Professional web development with librariesChristian Heilmann
 
CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書拓樹 谷
 
Select * from internet
Select * from internetSelect * from internet
Select * from internetmarkandey
 
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasFrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasLoiane Groner
 
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015Sergii Khomenko
 
It’S Easy To Build A Web Business
It’S Easy To Build A Web BusinessIt’S Easy To Build A Web Business
It’S Easy To Build A Web BusinessVal Vlădescu
 
How to develop frontend application
How to develop frontend applicationHow to develop frontend application
How to develop frontend applicationSeokjun Kim
 
BDD revolution - or how we came back from hell
BDD revolution - or how we came back from hellBDD revolution - or how we came back from hell
BDD revolution - or how we came back from hellMateusz Zalewski
 
Components are the Future of the Web: It’s Going To Be Okay
Components are the Future of the Web: It’s Going To Be OkayComponents are the Future of the Web: It’s Going To Be Okay
Components are the Future of the Web: It’s Going To Be OkayFITC
 

La actualidad más candente (14)

Acceptance Testing with Webrat
Acceptance Testing with WebratAcceptance Testing with Webrat
Acceptance Testing with Webrat
 
Using HTML5 for a great Open Web
Using HTML5 for a great Open WebUsing HTML5 for a great Open Web
Using HTML5 for a great Open Web
 
Professional web development with libraries
Professional web development with librariesProfessional web development with libraries
Professional web development with libraries
 
CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書CSSプリプロセッサの取扱説明書
CSSプリプロセッサの取扱説明書
 
Select * from internet
Select * from internetSelect * from internet
Select * from internet
 
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridasFrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
FrontInBahia 2014: 10 dicas de desempenho para apps mobile híbridas
 
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015
Helping Data Teams with Puppet / Puppet Camp London - Apr 13, 2015
 
Yahoo is open to developers
Yahoo is open to developersYahoo is open to developers
Yahoo is open to developers
 
It’S Easy To Build A Web Business
It’S Easy To Build A Web BusinessIt’S Easy To Build A Web Business
It’S Easy To Build A Web Business
 
Theme verdadeiro
Theme verdadeiroTheme verdadeiro
Theme verdadeiro
 
How to develop frontend application
How to develop frontend applicationHow to develop frontend application
How to develop frontend application
 
BDD revolution - or how we came back from hell
BDD revolution - or how we came back from hellBDD revolution - or how we came back from hell
BDD revolution - or how we came back from hell
 
More of less (take 2)
More of less (take 2)More of less (take 2)
More of less (take 2)
 
Components are the Future of the Web: It’s Going To Be Okay
Components are the Future of the Web: It’s Going To Be OkayComponents are the Future of the Web: It’s Going To Be Okay
Components are the Future of the Web: It’s Going To Be Okay
 

Similar a Playing With The Web

jQuery Performance Rules
jQuery Performance RulesjQuery Performance Rules
jQuery Performance Rulesnagarajhubli
 
Finding things on the web with BOSS
Finding things on the web with BOSSFinding things on the web with BOSS
Finding things on the web with BOSSChristian Heilmann
 
Web Scraper Shibuya.pm tech talk #8
Web Scraper Shibuya.pm tech talk #8Web Scraper Shibuya.pm tech talk #8
Web Scraper Shibuya.pm tech talk #8Tatsuhiko Miyagawa
 
PHP and Rich Internet Applications
PHP and Rich Internet ApplicationsPHP and Rich Internet Applications
PHP and Rich Internet Applicationselliando dias
 
Advanced and Hidden WordPress APIs
Advanced and Hidden WordPress APIsAdvanced and Hidden WordPress APIs
Advanced and Hidden WordPress APIsandrewnacin
 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]Chris Toohey
 
API Technical Writing
API Technical WritingAPI Technical Writing
API Technical WritingSarah Maddox
 
London Web - Making a usable accessible website using HTML5 and CSS3 allowing...
London Web - Making a usable accessible website using HTML5 and CSS3 allowing...London Web - Making a usable accessible website using HTML5 and CSS3 allowing...
London Web - Making a usable accessible website using HTML5 and CSS3 allowing...Nathan O'Hanlon
 
Introduction To Lamp
Introduction To LampIntroduction To Lamp
Introduction To LampAmzad Hossain
 
Mashups & APIs
Mashups & APIsMashups & APIs
Mashups & APIsPamela Fox
 
Django - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosDjango - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosIgor Sobreira
 
Data Mining Open Ap Is
Data Mining Open Ap IsData Mining Open Ap Is
Data Mining Open Ap Isoscon2007
 
Lessons Learned - Building YDN
Lessons Learned - Building YDNLessons Learned - Building YDN
Lessons Learned - Building YDNDan Theurer
 
Client-side JavaScript Vulnerabilities
Client-side JavaScript VulnerabilitiesClient-side JavaScript Vulnerabilities
Client-side JavaScript VulnerabilitiesOry Segal
 
Smarter Interfaces with jQuery (and Drupal)
Smarter Interfaces with jQuery (and Drupal)Smarter Interfaces with jQuery (and Drupal)
Smarter Interfaces with jQuery (and Drupal)aasarava
 

Similar a Playing With The Web (20)

jQuery Performance Rules
jQuery Performance RulesjQuery Performance Rules
jQuery Performance Rules
 
Finding things on the web with BOSS
Finding things on the web with BOSSFinding things on the web with BOSS
Finding things on the web with BOSS
 
Modern Perl
Modern PerlModern Perl
Modern Perl
 
Web Scraper Shibuya.pm tech talk #8
Web Scraper Shibuya.pm tech talk #8Web Scraper Shibuya.pm tech talk #8
Web Scraper Shibuya.pm tech talk #8
 
PHP and Rich Internet Applications
PHP and Rich Internet ApplicationsPHP and Rich Internet Applications
PHP and Rich Internet Applications
 
Advanced and Hidden WordPress APIs
Advanced and Hidden WordPress APIsAdvanced and Hidden WordPress APIs
Advanced and Hidden WordPress APIs
 
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
10 Things You're Not Doing [IBM Lotus Notes Domino Application Development]
 
API Technical Writing
API Technical WritingAPI Technical Writing
API Technical Writing
 
London Web - Making a usable accessible website using HTML5 and CSS3 allowing...
London Web - Making a usable accessible website using HTML5 and CSS3 allowing...London Web - Making a usable accessible website using HTML5 and CSS3 allowing...
London Web - Making a usable accessible website using HTML5 and CSS3 allowing...
 
Test upload
Test uploadTest upload
Test upload
 
Introduction To Lamp
Introduction To LampIntroduction To Lamp
Introduction To Lamp
 
Mashups & APIs
Mashups & APIsMashups & APIs
Mashups & APIs
 
Django - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazosDjango - Framework web para perfeccionistas com prazos
Django - Framework web para perfeccionistas com prazos
 
Data Mining Open Ap Is
Data Mining Open Ap IsData Mining Open Ap Is
Data Mining Open Ap Is
 
Lessons Learned - Building YDN
Lessons Learned - Building YDNLessons Learned - Building YDN
Lessons Learned - Building YDN
 
Front End on Rails
Front End on RailsFront End on Rails
Front End on Rails
 
Fast by Default
Fast by DefaultFast by Default
Fast by Default
 
Client-side JavaScript Vulnerabilities
Client-side JavaScript VulnerabilitiesClient-side JavaScript Vulnerabilities
Client-side JavaScript Vulnerabilities
 
Smarter Interfaces with jQuery (and Drupal)
Smarter Interfaces with jQuery (and Drupal)Smarter Interfaces with jQuery (and Drupal)
Smarter Interfaces with jQuery (and Drupal)
 
Building Web Hack Interfaces
Building Web Hack InterfacesBuilding Web Hack Interfaces
Building Web Hack Interfaces
 

Más de Christian Heilmann

Develop, Debug, Learn? - Dotjs2019
Develop, Debug, Learn? - Dotjs2019Develop, Debug, Learn? - Dotjs2019
Develop, Debug, Learn? - Dotjs2019Christian Heilmann
 
Taking the "vile" out of privilege
Taking the "vile" out of privilegeTaking the "vile" out of privilege
Taking the "vile" out of privilegeChristian Heilmann
 
Seven ways to be a happier JavaScript developer - NDC Oslo
Seven ways to be a happier JavaScript developer - NDC OsloSeven ways to be a happier JavaScript developer - NDC Oslo
Seven ways to be a happier JavaScript developer - NDC OsloChristian Heilmann
 
Artificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteArtificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteChristian Heilmann
 
Killing the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteKilling the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteChristian Heilmann
 
Progressive Web Apps - Techdays Finland
Progressive Web Apps - Techdays FinlandProgressive Web Apps - Techdays Finland
Progressive Web Apps - Techdays FinlandChristian Heilmann
 
Taking the "vile" out of privilege
Taking the "vile" out of privilegeTaking the "vile" out of privilege
Taking the "vile" out of privilegeChristian Heilmann
 
Five ways to be a happier JavaScript developer
Five ways to be a happier JavaScript developerFive ways to be a happier JavaScript developer
Five ways to be a happier JavaScript developerChristian Heilmann
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Christian Heilmann
 
You learned JavaScript - now what?
You learned JavaScript - now what?You learned JavaScript - now what?
You learned JavaScript - now what?Christian Heilmann
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Christian Heilmann
 
Progressive Web Apps - Covering the best of both worlds - DevReach
Progressive Web Apps - Covering the best of both worlds - DevReachProgressive Web Apps - Covering the best of both worlds - DevReach
Progressive Web Apps - Covering the best of both worlds - DevReachChristian Heilmann
 
Progressive Web Apps - Covering the best of both worlds
Progressive Web Apps - Covering the best of both worldsProgressive Web Apps - Covering the best of both worlds
Progressive Web Apps - Covering the best of both worldsChristian Heilmann
 
Non-trivial pursuits: Learning machines and forgetful humans
Non-trivial pursuits: Learning machines and forgetful humansNon-trivial pursuits: Learning machines and forgetful humans
Non-trivial pursuits: Learning machines and forgetful humansChristian Heilmann
 
Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center Christian Heilmann
 
CSS vs. JavaScript - Trust vs. Control
CSS vs. JavaScript - Trust vs. ControlCSS vs. JavaScript - Trust vs. Control
CSS vs. JavaScript - Trust vs. ControlChristian Heilmann
 
Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017Christian Heilmann
 
The Soul in The Machine - Developing for Humans (FrankenJS edition)
The Soul in The Machine - Developing for Humans (FrankenJS edition)The Soul in The Machine - Developing for Humans (FrankenJS edition)
The Soul in The Machine - Developing for Humans (FrankenJS edition)Christian Heilmann
 

Más de Christian Heilmann (20)

Develop, Debug, Learn? - Dotjs2019
Develop, Debug, Learn? - Dotjs2019Develop, Debug, Learn? - Dotjs2019
Develop, Debug, Learn? - Dotjs2019
 
Hinting at a better web
Hinting at a better webHinting at a better web
Hinting at a better web
 
Taking the "vile" out of privilege
Taking the "vile" out of privilegeTaking the "vile" out of privilege
Taking the "vile" out of privilege
 
Seven ways to be a happier JavaScript developer - NDC Oslo
Seven ways to be a happier JavaScript developer - NDC OsloSeven ways to be a happier JavaScript developer - NDC Oslo
Seven ways to be a happier JavaScript developer - NDC Oslo
 
Artificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynoteArtificial intelligence for humans… #AIDC2018 keynote
Artificial intelligence for humans… #AIDC2018 keynote
 
Killing the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynoteKilling the golden calf of coding - We are Developers keynote
Killing the golden calf of coding - We are Developers keynote
 
Progressive Web Apps - Techdays Finland
Progressive Web Apps - Techdays FinlandProgressive Web Apps - Techdays Finland
Progressive Web Apps - Techdays Finland
 
Taking the "vile" out of privilege
Taking the "vile" out of privilegeTaking the "vile" out of privilege
Taking the "vile" out of privilege
 
Five ways to be a happier JavaScript developer
Five ways to be a happier JavaScript developerFive ways to be a happier JavaScript developer
Five ways to be a happier JavaScript developer
 
Taking the P out of PWA
Taking the P out of PWATaking the P out of PWA
Taking the P out of PWA
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"
 
You learned JavaScript - now what?
You learned JavaScript - now what?You learned JavaScript - now what?
You learned JavaScript - now what?
 
Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"Sacrificing the golden calf of "coding"
Sacrificing the golden calf of "coding"
 
Progressive Web Apps - Covering the best of both worlds - DevReach
Progressive Web Apps - Covering the best of both worlds - DevReachProgressive Web Apps - Covering the best of both worlds - DevReach
Progressive Web Apps - Covering the best of both worlds - DevReach
 
Progressive Web Apps - Covering the best of both worlds
Progressive Web Apps - Covering the best of both worldsProgressive Web Apps - Covering the best of both worlds
Progressive Web Apps - Covering the best of both worlds
 
Non-trivial pursuits: Learning machines and forgetful humans
Non-trivial pursuits: Learning machines and forgetful humansNon-trivial pursuits: Learning machines and forgetful humans
Non-trivial pursuits: Learning machines and forgetful humans
 
Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center Progressive Web Apps - Bringing the web front and center
Progressive Web Apps - Bringing the web front and center
 
CSS vs. JavaScript - Trust vs. Control
CSS vs. JavaScript - Trust vs. ControlCSS vs. JavaScript - Trust vs. Control
CSS vs. JavaScript - Trust vs. Control
 
Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017Leveling up your JavaScipt - DrupalJam 2017
Leveling up your JavaScipt - DrupalJam 2017
 
The Soul in The Machine - Developing for Humans (FrankenJS edition)
The Soul in The Machine - Developing for Humans (FrankenJS edition)The Soul in The Machine - Developing for Humans (FrankenJS edition)
The Soul in The Machine - Developing for Humans (FrankenJS edition)
 

Último

Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechProduct School
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInThousandEyes
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationKnoldus Inc.
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTopCSSGallery
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdfThe Good Food Institute
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxSatishbabu Gunukula
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updateadam112203
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxNeo4j
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsDianaGray10
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Libraryshyamraj55
 
LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0DanBrown980551
 
Graphene Quantum Dots-Based Composites for Biomedical Applications
Graphene Quantum Dots-Based Composites for  Biomedical ApplicationsGraphene Quantum Dots-Based Composites for  Biomedical Applications
Graphene Quantum Dots-Based Composites for Biomedical Applicationsnooralam814309
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kitJamie (Taka) Wang
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosErol GIRAUDY
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2DianaGray10
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...DianaGray10
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfInfopole1
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightSafe Software
 
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTxtailishbaloch
 

Último (20)

Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - TechWebinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
Webinar: The Art of Prioritizing Your Product Roadmap by AWS Sr PM - Tech
 
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedInOutage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
Outage Analysis: March 5th/6th 2024 Meta, Comcast, and LinkedIn
 
Introduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its applicationIntroduction to RAG (Retrieval Augmented Generation) and its application
Introduction to RAG (Retrieval Augmented Generation) and its application
 
Top 10 Squarespace Development Companies
Top 10 Squarespace Development CompaniesTop 10 Squarespace Development Companies
Top 10 Squarespace Development Companies
 
2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf2024.03.12 Cost drivers of cultivated meat production.pdf
2024.03.12 Cost drivers of cultivated meat production.pdf
 
Oracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptxOracle Database 23c Security New Features.pptx
Oracle Database 23c Security New Features.pptx
 
Patch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 updatePatch notes explaining DISARM Version 1.4 update
Patch notes explaining DISARM Version 1.4 update
 
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptxGraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
GraphSummit Copenhagen 2024 - Neo4j Vision and Roadmap.pptx
 
Automation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projectsAutomation Ops Series: Session 2 - Governance for UiPath projects
Automation Ops Series: Session 2 - Governance for UiPath projects
 
How to release an Open Source Dataweave Library
How to release an Open Source Dataweave LibraryHow to release an Open Source Dataweave Library
How to release an Open Source Dataweave Library
 
LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0LF Energy Webinar - Unveiling OpenEEMeter 4.0
LF Energy Webinar - Unveiling OpenEEMeter 4.0
 
Graphene Quantum Dots-Based Composites for Biomedical Applications
Graphene Quantum Dots-Based Composites for  Biomedical ApplicationsGraphene Quantum Dots-Based Composites for  Biomedical Applications
Graphene Quantum Dots-Based Composites for Biomedical Applications
 
SheDev 2024
SheDev 2024SheDev 2024
SheDev 2024
 
20140402 - Smart house demo kit
20140402 - Smart house demo kit20140402 - Smart house demo kit
20140402 - Smart house demo kit
 
Scenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenariosScenario Library et REX Discover industry- and role- based scenarios
Scenario Library et REX Discover industry- and role- based scenarios
 
UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2UiPath Studio Web workshop series - Day 2
UiPath Studio Web workshop series - Day 2
 
Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...Explore the UiPath Community and ways you can benefit on your journey to auto...
Explore the UiPath Community and ways you can benefit on your journey to auto...
 
Extra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdfExtra-120324-Visite-Entreprise-icare.pdf
Extra-120324-Visite-Entreprise-icare.pdf
 
The Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and InsightThe Zero-ETL Approach: Enhancing Data Agility and Insight
The Zero-ETL Approach: Enhancing Data Agility and Insight
 
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENTSIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
SIM INFORMATION SYSTEM: REVOLUTIONIZING DATA MANAGEMENT
 

Playing With The Web