Transcript
Page 1: FITC '14 Toronto - Technology, a means to an end

Technology, a means to an end. Thibault Imbert

Page 2: FITC '14 Toronto - Technology, a means to an end

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: FITC '14 Toronto - Technology, a means to an end

CSS Shapes

Page 4: FITC '14 Toronto - Technology, a means to an end

Blend modes

Page 5: FITC '14 Toronto - Technology, a means to an end

Masking

Page 6: FITC '14 Toronto - Technology, a means to an end
Page 7: FITC '14 Toronto - Technology, a means to an end

justinjackson.ca/words.html

Page 8: FITC '14 Toronto - Technology, a means to an end

Technologyto serve a goal.

Page 9: FITC '14 Toronto - Technology, a means to an end

Focus on the goal, implementation is a detail.

Page 10: FITC '14 Toronto - Technology, a means to an end

detail.

Page 11: FITC '14 Toronto - Technology, a means to an end
Page 12: FITC '14 Toronto - Technology, a means to an end

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

Page 13: FITC '14 Toronto - Technology, a means to an end

Don’t place a technology.

Use the best one to do the best job.

Page 14: FITC '14 Toronto - Technology, a means to an end

DHTML!Flash

Page 15: FITC '14 Toronto - Technology, a means to an end

Ajax!Flash

Page 16: FITC '14 Toronto - Technology, a means to an end

Silverlight!Flash

Page 17: FITC '14 Toronto - Technology, a means to an end

Familiar?

Native!HTML/JS!

Page 18: FITC '14 Toronto - Technology, a means to an end

It is about the result, the end goal.

Page 19: FITC '14 Toronto - Technology, a means to an end
Page 20: FITC '14 Toronto - Technology, a means to an end
Page 21: FITC '14 Toronto - Technology, a means to an end
Page 22: FITC '14 Toronto - Technology, a means to an end

Technologies, come and go.

Page 23: FITC '14 Toronto - Technology, a means to an end

So I should not care?

Page 24: FITC '14 Toronto - Technology, a means to an end

Be passionate, stay curious,

and always assume you don’t know.

Page 25: FITC '14 Toronto - Technology, a means to an end
Page 26: FITC '14 Toronto - Technology, a means to an end

"The most dangerous thought you can have as a creative

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

Page 27: FITC '14 Toronto - Technology, a means to an end

JavaScript will win.

C++ will win.

Obj-C will win.

Dart will win.

Why should one win?

There is no safe bet.

Page 28: FITC '14 Toronto - Technology, a means to an end

By being religious, you barricade yourself.

Page 29: FITC '14 Toronto - Technology, a means to an end

You stop learning and start having preconceived ideas.

Page 30: FITC '14 Toronto - Technology, a means to an end

JavaScript is for “scripting” only.

Page 31: FITC '14 Toronto - Technology, a means to an end
Page 32: FITC '14 Toronto - Technology, a means to an end

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

Page 33: FITC '14 Toronto - Technology, a means to an end

JavaScript is not object-oriented.

Page 34: FITC '14 Toronto - Technology, a means to an end

ES6

Page 35: FITC '14 Toronto - Technology, a means to an end

//  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: FITC '14 Toronto - Technology, a means to an end

But what if I want static-typing?

Page 37: FITC '14 Toronto - Technology, a means to an end

www.typescriptlang.org

Page 38: FITC '14 Toronto - Technology, a means to an end

//  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: FITC '14 Toronto - Technology, a means to an end

Which will generate plain ES5 compatible JS

Page 40: FITC '14 Toronto - Technology, a means to an end

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: FITC '14 Toronto - Technology, a means to an end

Challenge, run the original Space Invaders ROM in JS

Page 42: FITC '14 Toronto - Technology, a means to an end

Ported in an hour to JavaScript

Page 43: FITC '14 Toronto - Technology, a means to an end
Page 44: FITC '14 Toronto - Technology, a means to an end

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

Page 45: FITC '14 Toronto - Technology, a means to an end

C# is for Windows developers only

Page 46: FITC '14 Toronto - Technology, a means to an end
Page 47: FITC '14 Toronto - Technology, a means to an end
Page 48: FITC '14 Toronto - Technology, a means to an end
Page 49: FITC '14 Toronto - Technology, a means to an end
Page 50: FITC '14 Toronto - Technology, a means to an end

Xamarin

Page 51: FITC '14 Toronto - Technology, a means to an end
Page 52: FITC '14 Toronto - Technology, a means to an end

C++ is way too low-level.

Page 53: FITC '14 Toronto - Technology, a means to an end

C++11

Page 54: FITC '14 Toronto - Technology, a means to an end

#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: FITC '14 Toronto - Technology, a means to an end

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

Page 56: FITC '14 Toronto - Technology, a means to an end
Page 57: FITC '14 Toronto - Technology, a means to an end

Starry Night by Petros Vrellis

Page 58: FITC '14 Toronto - Technology, a means to an end

openFrameworks

Page 59: FITC '14 Toronto - Technology, a means to an end

Functional programming languages are not for real world usage.

Page 60: FITC '14 Toronto - Technology, a means to an end

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: FITC '14 Toronto - Technology, a means to an end

Functional programming is: I want a latte.

Thank you.

Page 62: FITC '14 Toronto - Technology, a means to an end

Have a look at F#

Page 63: FITC '14 Toronto - Technology, a means to an end

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

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

Page 64: FITC '14 Toronto - Technology, a means to an end

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: FITC '14 Toronto - Technology, a means to an end

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: FITC '14 Toronto - Technology, a means to an end

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

Page 67: FITC '14 Toronto - Technology, a means to an end

Multicore and web apps? No way.

Page 68: FITC '14 Toronto - Technology, a means to an end

&

Page 69: FITC '14 Toronto - Technology, a means to an end

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

Page 70: FITC '14 Toronto - Technology, a means to an end

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

Page 71: FITC '14 Toronto - Technology, a means to an end

OpenCL (behind the scene)

Page 72: FITC '14 Toronto - Technology, a means to an end

Multicore and web apps? No way.

Page 73: FITC '14 Toronto - Technology, a means to an end

River Trail bit.ly/qme8BY

Page 74: FITC '14 Toronto - Technology, a means to an end

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

learning new stuff.

Page 75: FITC '14 Toronto - Technology, a means to an end

Creativity, but stepping back from technology.

Page 76: FITC '14 Toronto - Technology, a means to an end
Page 77: FITC '14 Toronto - Technology, a means to an end
Page 78: FITC '14 Toronto - Technology, a means to an end

GoalExperiment

FailIterate

Page 79: FITC '14 Toronto - Technology, a means to an end
Page 80: FITC '14 Toronto - Technology, a means to an end
Page 81: FITC '14 Toronto - Technology, a means to an end
Page 82: FITC '14 Toronto - Technology, a means to an end

Not good!Not good

Looks good!

Looks good!

Page 83: FITC '14 Toronto - Technology, a means to an end
Page 84: FITC '14 Toronto - Technology, a means to an end

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

Page 85: FITC '14 Toronto - Technology, a means to an end

@thibault_imbert

Thank you!


Top Related