technology: a means to an end with thibault imbert

85
Technology, a means to an end. Thibault Imbert

Upload: fitc

Post on 06-May-2015

115 views

Category:

Technology


2 download

DESCRIPTION

Technology: A Means to an End with Thibault Imbert Technology is fascinating, but should this be what drives us? What are the things you can do to differentiate yourself today? With all that noise, what are things you should be looking at? In this talk, Thibault Imbert will look at the different technologies available today to build amazing experiences and what’s coming tomorrow. He will focus on the importance of learning, crafting and getting out of your comfort zone and most importantly, to never be religious about a technology. Presented at FITC Toronto 2014 on April 27-29, 2014 More info at www.FITC.ca

TRANSCRIPT

Page 1: Technology: A Means to an End with Thibault Imbert

Technology, a means to an end. Thibault Imbert

Page 2: Technology: A Means to an End with Thibault Imbert

1996 - Discovered BASIC on my dad’s T07.

1998 - Started playing with Flash in my bedroom !

2004 - Teaching programming !

2008 - Joined Adobe (France) !

2010 - Moved to San Francisco (PM for Flash Player) !

2014 - Working on next-gen web authoring tools/services projectparfait.adobe.com

Page 3: Technology: A Means to an End with Thibault Imbert

CSS Shapes

Page 4: Technology: A Means to an End with Thibault Imbert

Blend modes

Page 5: Technology: A Means to an End with Thibault Imbert

Masking

Page 6: Technology: A Means to an End with Thibault Imbert
Page 7: Technology: A Means to an End with Thibault Imbert

justinjackson.ca/words.html

Page 8: Technology: A Means to an End with Thibault Imbert

Technologyto serve a goal.

Page 9: Technology: A Means to an End with Thibault Imbert

Focus on the goal, implementation is a detail.

Page 10: Technology: A Means to an End with Thibault Imbert

detail.

Page 11: Technology: A Means to an End with Thibault Imbert
Page 12: Technology: A Means to an End with Thibault Imbert

C++, Objective-C, ActionScript, JavaScript, Java, C#…

Page 13: Technology: A Means to an End with Thibault Imbert

Don’t place a technology.

Use the best one to do the best job.

Page 14: Technology: A Means to an End with Thibault Imbert

DHTML!Flash

Page 15: Technology: A Means to an End with Thibault Imbert

Ajax!Flash

Page 16: Technology: A Means to an End with Thibault Imbert

Silverlight!Flash

Page 17: Technology: A Means to an End with Thibault Imbert

Familiar?

Native!HTML/JS!

Page 18: Technology: A Means to an End with Thibault Imbert

It is about the result, the end goal.

Page 19: Technology: A Means to an End with Thibault Imbert
Page 20: Technology: A Means to an End with Thibault Imbert
Page 21: Technology: A Means to an End with Thibault Imbert
Page 22: Technology: A Means to an End with Thibault Imbert

Technologies, come and go.

Page 23: Technology: A Means to an End with Thibault Imbert

So I should not care?

Page 24: Technology: A Means to an End with Thibault Imbert

Be passionate, stay curious,

and always assume you don’t know.

Page 25: Technology: A Means to an End with Thibault Imbert
Page 26: Technology: A Means to an End with Thibault Imbert

"The most dangerous thought you can have as a creative

person is to think you know what you're doing.” - Bret Victor

Page 27: Technology: A Means to an End with Thibault Imbert

JavaScript will win.

C++ will win.

Obj-C will win.

Dart will win.

Why should one win?

There is no safe bet.

Page 28: Technology: A Means to an End with Thibault Imbert

By being religious, you barricade yourself.

Page 29: Technology: A Means to an End with Thibault Imbert

You stop learning and start having preconceived ideas.

Page 30: Technology: A Means to an End with Thibault Imbert

JavaScript is for “scripting” only.

Page 31: Technology: A Means to an End with Thibault Imbert
Page 32: Technology: A Means to an End with Thibault Imbert

asmjs.org an extraordinarily optimizable, low-level subset of JavaScript

Page 33: Technology: A Means to an End with Thibault Imbert

JavaScript is not object-oriented.

Page 34: Technology: A Means to an End with Thibault Imbert

ES6

Page 35: Technology: A Means to an End with Thibault Imbert

//  entities.js  module  entities  {                    export  class  Person  {  !            private  message  =  "Hi  my  name  is  ";  !            constructor  (public  name,  public  age,  public  town){                      this.name  =  name;                      this.age  -­‐  age;                      this.town  =  town;              }  !            talk(){                      return  this.message  +  this.name;              }  !            get  isAbove18(){                      return  this.age  >=  18;              }  }

Page 36: Technology: A Means to an End with Thibault Imbert

But what if I want static-typing?

Page 37: Technology: A Means to an End with Thibault Imbert

www.typescriptlang.org

Page 38: Technology: A Means to an End with Thibault Imbert

//  entities.js  module  entities  {                    export  class  Person  {  !            private  message  :string  =  "Hi  my  name  is  ";  !            constructor  (public  name:  string,  public  age:  number,  public    town:  string){                      this.name  =  name;                      this.age  =  age;                      this.town  =  town;              }  !            talk(){                      return  this.message  +  this.name;              }  !            get  isAbove18(){                      return  this.age  >=  18;              }  }

Page 39: Technology: A Means to an End with Thibault Imbert

Which will generate plain ES5 compatible JS

Page 40: Technology: A Means to an End with Thibault Imbert

var  Person  =  (function  ()  {          function  Person(name,  age,  town)  {                  this.name  =  name;                  this.age  =  age;                  this.town  =  town;                  this.message  =  "Hi  my  name  is  ";                  this.name  =  name;                  this.age  -­‐  age;                  this.town  =  town;          }          Person.prototype.talk  =  function  ()  {                  return  this.message  +  this.name;          };  !        Object.defineProperty(Person.prototype,  "isAbove18",  {                  get:  function  ()  {                          return  this.age  >=  18;                  },                  enumerable:  true,                  configurable:  true          });          return  Person;  })();  

Page 41: Technology: A Means to an End with Thibault Imbert

Challenge, run the original Space Invaders ROM in JS

Page 42: Technology: A Means to an End with Thibault Imbert

Ported in an hour to JavaScript

Page 43: Technology: A Means to an End with Thibault Imbert
Page 44: Technology: A Means to an End with Thibault Imbert

Chose the best option (for me) to get the job done.

Page 45: Technology: A Means to an End with Thibault Imbert

C# is for Windows developers only

Page 46: Technology: A Means to an End with Thibault Imbert
Page 47: Technology: A Means to an End with Thibault Imbert
Page 48: Technology: A Means to an End with Thibault Imbert
Page 49: Technology: A Means to an End with Thibault Imbert
Page 50: Technology: A Means to an End with Thibault Imbert

Xamarin

Page 51: Technology: A Means to an End with Thibault Imbert
Page 52: Technology: A Means to an End with Thibault Imbert

C++ is way too low-level.

Page 53: Technology: A Means to an End with Thibault Imbert

C++11

Page 54: Technology: A Means to an End with Thibault Imbert

#include  <iostream>  #include  <stdint.h>  #include  <iostream>  #include  <vector>  #include  <algorithm>  !int  main(int  argc,  const  char  *  argv[])  {          std::vector<uint32_t>  data  =  {  234,  76767,  43,  343,  4322,  33,  122  };                    std::sort(data.begin(),  data.end(),  []  (uint32_t  a,  uint32_t  b)  {  return  a  <  b;  });                    for  (auto  i  =  data.begin();  i  <  data.end();  i++)  {                  std::cout  <<  *i  <<  std::endl;          }                    class  MyClass  {                  public:                          MyClass(size_t  size)  :  m_size(size)  {  }                          MyClass(const  char  *str)  :  MyClass(strlen(str))  {  }                          size_t  Size()  {  return  m_size;  }                  private:                          size_t  m_size;          };                    MyClass  obj("Hello!");          std::cout  <<  obj.Size()  <<  std::endl;          return  0;  }

Page 55: Technology: A Means to an End with Thibault Imbert

I am a web guy, doing scripting, cool native stuff is hard.

Page 56: Technology: A Means to an End with Thibault Imbert
Page 57: Technology: A Means to an End with Thibault Imbert

Starry Night by Petros Vrellis

Page 58: Technology: A Means to an End with Thibault Imbert

openFrameworks

Page 59: Technology: A Means to an End with Thibault Imbert

Functional programming languages are not for real world usage.

Page 60: Technology: A Means to an End with Thibault Imbert

Imperative programming is: I want a latte.

Heat some milk. Put it into a cup.

Brew some coffee with a stovetop Moka pot. Pour the coffee into the heated milk.

Thank you.

Page 61: Technology: A Means to an End with Thibault Imbert

Functional programming is: I want a latte.

Thank you.

Page 62: Technology: A Means to an End with Thibault Imbert

Have a look at F#

Page 63: Technology: A Means to an End with Thibault Imbert

let numbers = [ 0..2..20 ] !

val numbers : int list = [0; 2; 4; 6; 8; 10; 12; 14; 16; 18; 20]

Page 64: Technology: A Means to an End with Thibault Imbert

var value = Math.abs ( Math.round ( Math.sqrt ( 3.56 ) ) );

let result = 3.56 |> System.Math.Sqrt |> System.Math.Round |> System.Math.Abs

Page 65: Technology: A Means to an End with Thibault Imbert

let numbers = [ 0..3..30 ] let square x = x * x !let sumSquare nums = let mutable buffer = 0 for i in nums do buffer <- buffer + square i buffer !let result = sumSquare numbers

Page 66: Technology: A Means to an End with Thibault Imbert

let sumSquare nums = nums |> Seq.map ( fun x -> x * x ) |> Seq.sum

Page 67: Technology: A Means to an End with Thibault Imbert

Multicore and web apps? No way.

Page 68: Technology: A Means to an End with Thibault Imbert

&

Page 69: Technology: A Means to an End with Thibault Imbert

myPA  =  [1,  2,  3];      //  incrementation  is  parallelized  on  the  GPU  myPlusPA  =  myPA.mapPar(val  =>  val  +  1);  

Page 70: Technology: A Means to an End with Thibault Imbert

myPA  =  [1,  2,  3];      //  incrementation  is  parallelized  on  the  GPU  myPlusPA  =  myPA.mapPar(val  =>  val  +  1);  

Page 71: Technology: A Means to an End with Thibault Imbert

OpenCL (behind the scene)

Page 72: Technology: A Means to an End with Thibault Imbert

Multicore and web apps? No way.

Page 73: Technology: A Means to an End with Thibault Imbert

River Trail bit.ly/qme8BY

Page 74: Technology: A Means to an End with Thibault Imbert

You may never use these, but they will make you a better developer, so keep

learning new stuff.

Page 75: Technology: A Means to an End with Thibault Imbert

Creativity, but stepping back from technology.

Page 76: Technology: A Means to an End with Thibault Imbert
Page 77: Technology: A Means to an End with Thibault Imbert
Page 78: Technology: A Means to an End with Thibault Imbert

GoalExperiment

FailIterate

Page 79: Technology: A Means to an End with Thibault Imbert
Page 80: Technology: A Means to an End with Thibault Imbert
Page 81: Technology: A Means to an End with Thibault Imbert
Page 82: Technology: A Means to an End with Thibault Imbert

Not good!Not good

Looks good!

Looks good!

Page 83: Technology: A Means to an End with Thibault Imbert
Page 84: Technology: A Means to an End with Thibault Imbert

Success is not an event, it is a process. James Clear.

Page 85: Technology: A Means to an End with Thibault Imbert

@thibault_imbert

Thank you!