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!


Top Related