SlideShare uma empresa Scribd logo
1 de 45
Building Apps for
                     Billions of Devices

                                               @tidoust
                                            1 June 2012
                                          Over the Air,
                                     Bletchley Park, UK
Friday, June 1, 12
The about page
                     François Daoust / @tidoust
                     Startup luver since 2000
                       MotionBridge - bubble startup - 6 years
                       Microsoft - oldish? startup - 2 years
                       W3C - one Web startup - 4 years
                       Joshfire - Factory startup - 0.523487 years and counting
                     “Relever le défi du Web mobile” with @dontcallmedom
                     (a book written in French, how weird...)

Friday, June 1, 12
Talking about

                      Connected objects
                      Cross-device App generation
                      Combinatorial explosion
                      Web standards
                      One Web... Oh boy, that old concept, again?!? Why?




Friday, June 1, 12
The Internet of Things




                            fuckyeahinternetfridge.tumblr.com
Friday, June 1, 12
The Internet of Things




                              2020: 25 Billion devices
Friday, June 1, 12
http://lemiroir.joshfire.com/


Friday, June 1, 12
Fragmentation at all levels
                          Form factors

                     Platforms & Stores

                       Perfs & Features

                                   UIs

                                 SDKs     Java
                                               C++    C#   JavaScript
                                                  ObjC CE-HTML

Friday, June 1, 12
Friday, June 1, 12
HTML5 is the wave
                     But where are the surfboards?




Friday, June 1, 12
In other words...


                      Why must I install & master 42 different SDKs to build my apps?
                      Why/WTF do I have to start each of my apps (almost) from
                      scratch for each platform?




Friday, June 1, 12
Where is the

                     WordPress

                      for Apps?

Friday, June 1, 12
Demo!
Friday, June 1, 12
Joshfire Factory for developers
                     Tech overview




Friday, June 1, 12
New app?


                     Start from a template       Import your code
                       Customize w/ addons         package.json
                       Fork it                     Framework agnostic




                                             A few examples of templates =>
Friday, June 1, 12
Friday, June 1, 12
Friday, June 1, 12
Friday, June 1, 12
Friday, June 1, 12
Data sources

                     Implemented in JS (wrappers for APIs, DBs, ...)
                     Client and/or server-side (perfs, security, cross-origin restrictions)
                     Standard-friendly libraries (http, xml, base64, async, _, iso8601...)
                     Normalization w/ schema.org
                     Can define configuration options
                      => form in Factory (based on JSON Schema)



Friday, June 1, 12
Add-ons


                     Hooks everywhere:
                       HTML body/head
                       Build time




Friday, June 1, 12
Build & deploy everywhere
                     Native apps: Cordova, Custom containers
                     Web apps: Push to hosting partners, S3, FTP, ...
                     TVs, obscure platforms: VMs with SDKs on our side
                     The sky is the limit
                       Custom hooks, stores, platforms, ...
                       Linux ISOs
                       Node.js

Friday, June 1, 12
Money?

                     Marketplace for templates, data, add-ons, deploys
                     Define your upfront or monthly pricing, if any
                     70/30 rev share
                     Contact us




Friday, June 1, 12
App architecture




Friday, June 1, 12
Data normalization?

                      Lots of service providers... and counting!
                      One service provider = One API
                      One service provider = One response format
                      combinatorial explosion!




Friday, June 1, 12
Example with images
                       Flickr                                   Instagram                                        Tumblr
     {                                              {                                            {
       "id": "6599755345",                            "type": "image",                                "blog_name": "joshfiretest",
       "title": "A VW bus in front of lake",          "created_time": "1338466731",                   "id": 20168207596,
       "description": {                               "link": "http://[...]/LSm7fMuskm/",             "post_url": "http://[...]/chaumont-with",
         "_content": "Riding an old Volkswagen        "images": {                                     "type": "photo",
     bus!"                                              "thumbnail": {                                "date": "2012-03-30 13:10:11 GMT",
       },                                                 "url": "http://[...]/761.jpg",              "timestamp": 1333113011,
       "dateupload": "1325245258",                        "width": 150,                               "caption": "<p>Picture <strong>taken</
       "datetaken": "2011-12-30 03:40:58",                "height": 150                             strong> at Parc des Buttes Chaumont. (with
       "datetakengranularity": "0",                     },                                          HTML in the caption ;)).</p>",
       "ownername": "tidoust",                        },                                              "photos": [
       "latitude": 47.582083,                         "caption": {                                      {
       "longitude": -120.257034,                        "created_time": "1338466755",                     "caption": "",
       "accuracy": "10",                                "text": "Created with #factory",                  "original_size": {
       "url_sq": "http://[...]/98cd3a90e9_s.jpg",     },                                                    "width": 1280,
       "height_sq": 75,                               "id": "203396146901207334_38633761",                  "height": 1280,
       "width_sq": 75,                                "user": {                                             "url": "http://[...]/1280.jpg"
       "url_l": "http://[...]/98cd3a90e9_b.jpg",        "username": "fungoku",                            }
       "height_l": "768",                               "profile_picture": "http://[...]/36391.jpg",     }
       "width_l": "1024"                              }                                               ]
     }                                              }                                               }
Friday, June 1, 12
Schema.org




Friday, June 1, 12
JSON serialization
                      {
                          "@type": "ImageObject",
                          "url": "http://[...]chaumont",
                          "author": [{
                             "@type": "Person",
                             "name": "joshfire"
                           }],
                          "datePublished": "2012-03-30T13:10:11Z",
                          "name": "Picture taken at Parc des Buttes Chaumont. (with HTML in the caption ;))",
                          "contentURL": "http://[...]/1280.jpg",
                          "width": 1280,
                          "height": 1280
                      }



Friday, June 1, 12
@type for a JS property,
                          seriously ?!?



Friday, June 1, 12
Yes, coming from JSON-LD,
                        “LD” for Linked Data
                        That’s Semantic Web for dummies
                                                 developers


Friday, June 1, 12
Define the @context
                       {
                           "@context": {
                             "schema": "http://schema.org",
                             "Person": "schema:Person",
                             "name": "schema:name",
                             "foaf": "http://xmlns.com/foaf/0.1/"
                           },
                           "@type": "Person",
                           "name": "Francois Daoust",
                           "foaf:nick": "tidoust"
                       }

                                            ... and proceed as usual
Friday, June 1, 12
Meanwhile, in templates...
                     // Retrieve feed from “some” service provider.
                     // No need to know which one!
                     var news = Joshfire.factory.getDataSource("news");
                     news.find({}, function (err, data) {
                       if (err) {
                         // An error occurred (network, service unavailable, etc.)
                       }
                       else {
                         // Parse and store resulting data
                         _.each(data.entries, function (item, idx) {
                           var process = function (item) {
                              // No need to know where the item comes from!
                           }
                           return process(item);
                         });
                       }
                     });
Friday, June 1, 12
Designing templates

                     Thou shalt share code across devices
                     Thou shalt think Responsive Web Design
                     Thou shalt use feature detection
                     Thou shalt “give your two cents” in responsive image talks
                     ... and that shall not be enough, I’m afraid :-(



Friday, June 1, 12
In practice
                      Different versions for different classes of devices
                      (hard to use the same version on TV!)
                      User-Agent sniffing is still useful in 2012
                      (no, it does not mean the world is coming to an end)
                      Fragmentation requires using all sorts of shims
                      Testing and fixing on actual devices consumes the time that you
                      don’t have



Friday, June 1, 12
Open Source is great!
                     ACE             iScroll                     oauth
                     Almond          jQuery                      openid
                     async           jQuery File Upload Plugin   PhotoSwipe
                     Backbone        jQuery UI                   Recurly.js
                     bcrypt          jquery.simplemodal          RequireJS
                     Bootstrap       jquery.tmpl                 restler
                     browserify      JSV (JSON-schema-           rimraf
                     colors          validator)                  sax
                     connect         knox                        semver
                     connect-mongo   less                        Transloadit jQuery SDK
                     ejs             mime                        uglify-js
                     es5-shim        mkdirp                      underscore
                     everyauth       mongodb                     useragent
                     express         mongoose                    Wink Toolkit
                     formidable      mustache                    wysihtml5
                     hashlib         node.js                     xml2js
                     history         node-statsd                 yamlparser
                     hooks           node-uuid                   Zepto
Friday, June 1, 12
Developer doc at:
                     http://developer.joshfire.com



Friday, June 1, 12
Factory .next
                     Upcoming features




Friday, June 1, 12
Upcoming
                     More templates – hey, you can write templates!
                     More datasources – hey, you can write datasources!
                     More deploys
                     Datasources operators à la Yahoo! Pipes
                     Local storage, offline support
                     Back-end / Front-end – mixing the best of two worlds



Friday, June 1, 12
Summary




Friday, June 1, 12
Summary

                     The future is full of connected objects and it’s going to be cool :-)
                     Combinatorial explosion is bad for your hair =|:-(
                     Web standards forever! ♥

                     Factor your apps to save time and $
                     Linked Data is good and you’re already using it ;-)



Friday, June 1, 12
One more thing...




Friday, June 1, 12
The largest JavaScript conference in France

                                    http://dotjs.fr




Friday, June 1, 12
Date & Venue

               30 November 2012
               (so before the end of the world)
               Paris, France
               at Le 104 (www.104.fr)
               Expecting 400 people
               Tickets available!


                                                  An option is pending for a bigger venue


Friday, June 1, 12
First confirmed speakers (1)
                           Jeremy Ashkenas
                           Created CoffeeScript, Backbone.js, Underscore.js
                           http://ashkenas.com


                           Mathias Bynens
                           Created jsperf.com, contributes to HTML5 Boilerplate
                           http://mathiasbynens.be


                           Christian Amor Kvalheim
                           Created the MongoDB driver for Node.js
                           http://christiankvalheim.com



Friday, June 1, 12
First confirmed speakers (2)
                               Ricardo Cabello aka Mr.doob
                               Created Three.js & many acclaimed JavaScript demos
                               http://mrdoob.com


                               Alex Russell
                               Created Dojo, member of ECMA TC39 (JavaScript standards)
                               http://infrequently.org


                               Bert Belder
                               Member of the Node.js core team
                               https://github.com/piscisaureus


                      Many more world-class speakers to be announced!
Friday, June 1, 12
Thank you for your attention!
                     Questions?

                                         @tidoust
                                  francois@joshfire.com

                                  factory.joshfire.com
Friday, June 1, 12

Mais conteúdo relacionado

Semelhante a Joshfire Factory: Building Apps for Billion of Devices

Open End To End Js Stack
Open End To End Js StackOpen End To End Js Stack
Open End To End Js StackSkills Matter
 
JClouds at San Francisco Java User Group
JClouds at San Francisco Java User GroupJClouds at San Francisco Java User Group
JClouds at San Francisco Java User GroupMarakana Inc.
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5Adrian Olaru
 
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJS
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJSMeteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJS
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJSJulio Antonio Mendonça de Marins
 
Get Ahead with HTML5 on Moible
Get Ahead with HTML5 on MoibleGet Ahead with HTML5 on Moible
Get Ahead with HTML5 on Moiblemarkuskobler
 
Cloud Camp Chicago Dec 2012 Slides
Cloud Camp Chicago Dec 2012 SlidesCloud Camp Chicago Dec 2012 Slides
Cloud Camp Chicago Dec 2012 SlidesRyan Koop
 
Cloud Camp Chicago Dec 2012 - All presentations
Cloud Camp Chicago Dec 2012 - All presentationsCloud Camp Chicago Dec 2012 - All presentations
Cloud Camp Chicago Dec 2012 - All presentationsCloudCamp Chicago
 
The Glass Class: Rapid Prototyping for Wearable Computers
The Glass Class: Rapid Prototyping for Wearable ComputersThe Glass Class: Rapid Prototyping for Wearable Computers
The Glass Class: Rapid Prototyping for Wearable ComputersMark Billinghurst
 
Devon 2011-f-1 반응형 웹 디자인
Devon 2011-f-1  반응형 웹 디자인Devon 2011-f-1  반응형 웹 디자인
Devon 2011-f-1 반응형 웹 디자인Daum DNA
 
Angular js mobile jsday 2014 - Verona 14 may
Angular js mobile   jsday 2014 - Verona 14 mayAngular js mobile   jsday 2014 - Verona 14 may
Angular js mobile jsday 2014 - Verona 14 mayLuciano Amodio
 
The Server Side of Responsive Web Design
The Server Side of Responsive Web DesignThe Server Side of Responsive Web Design
The Server Side of Responsive Web DesignDave Olsen
 
Pinkoi Mobile Web
Pinkoi Mobile WebPinkoi Mobile Web
Pinkoi Mobile Webmikeleeme
 
Building Social Enterprise with Ruby and Salesforce
Building Social Enterprise with Ruby and SalesforceBuilding Social Enterprise with Ruby and Salesforce
Building Social Enterprise with Ruby and SalesforceRaymond Gao
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)Bramus Van Damme
 
[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web DesignChristopher Schmitt
 
Building with JavaScript - write less by using the right tools
Building with JavaScript -  write less by using the right toolsBuilding with JavaScript -  write less by using the right tools
Building with JavaScript - write less by using the right toolsChristian Heilmann
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the CloudCloudBees
 
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile FrameworkBuilding a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile FrameworkSt. Petersburg College
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross IntroductionStuart Lodge
 

Semelhante a Joshfire Factory: Building Apps for Billion of Devices (20)

Open End To End Js Stack
Open End To End Js StackOpen End To End Js Stack
Open End To End Js Stack
 
JClouds at San Francisco Java User Group
JClouds at San Francisco Java User GroupJClouds at San Francisco Java User Group
JClouds at San Francisco Java User Group
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJS
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJSMeteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJS
Meteoro de pegasuus! Desenvolvendo aplicações realtime com MeteorJS
 
Node.JS briefly introduced
Node.JS briefly introducedNode.JS briefly introduced
Node.JS briefly introduced
 
Get Ahead with HTML5 on Moible
Get Ahead with HTML5 on MoibleGet Ahead with HTML5 on Moible
Get Ahead with HTML5 on Moible
 
Cloud Camp Chicago Dec 2012 Slides
Cloud Camp Chicago Dec 2012 SlidesCloud Camp Chicago Dec 2012 Slides
Cloud Camp Chicago Dec 2012 Slides
 
Cloud Camp Chicago Dec 2012 - All presentations
Cloud Camp Chicago Dec 2012 - All presentationsCloud Camp Chicago Dec 2012 - All presentations
Cloud Camp Chicago Dec 2012 - All presentations
 
The Glass Class: Rapid Prototyping for Wearable Computers
The Glass Class: Rapid Prototyping for Wearable ComputersThe Glass Class: Rapid Prototyping for Wearable Computers
The Glass Class: Rapid Prototyping for Wearable Computers
 
Devon 2011-f-1 반응형 웹 디자인
Devon 2011-f-1  반응형 웹 디자인Devon 2011-f-1  반응형 웹 디자인
Devon 2011-f-1 반응형 웹 디자인
 
Angular js mobile jsday 2014 - Verona 14 may
Angular js mobile   jsday 2014 - Verona 14 mayAngular js mobile   jsday 2014 - Verona 14 may
Angular js mobile jsday 2014 - Verona 14 may
 
The Server Side of Responsive Web Design
The Server Side of Responsive Web DesignThe Server Side of Responsive Web Design
The Server Side of Responsive Web Design
 
Pinkoi Mobile Web
Pinkoi Mobile WebPinkoi Mobile Web
Pinkoi Mobile Web
 
Building Social Enterprise with Ruby and Salesforce
Building Social Enterprise with Ruby and SalesforceBuilding Social Enterprise with Ruby and Salesforce
Building Social Enterprise with Ruby and Salesforce
 
From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)From Idea to App (or “How we roll at Small Town Heroes”)
From Idea to App (or “How we roll at Small Town Heroes”)
 
[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design[refreshaustin] Adaptive Images in Responsive Web Design
[refreshaustin] Adaptive Images in Responsive Web Design
 
Building with JavaScript - write less by using the right tools
Building with JavaScript -  write less by using the right toolsBuilding with JavaScript -  write less by using the right tools
Building with JavaScript - write less by using the right tools
 
Custom Runtimes for the Cloud
Custom Runtimes for the CloudCustom Runtimes for the Cloud
Custom Runtimes for the Cloud
 
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile FrameworkBuilding a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
Building a Simple Mobile-optimized Web App Using the jQuery Mobile Framework
 
MvvmCross Introduction
MvvmCross IntroductionMvvmCross Introduction
MvvmCross Introduction
 

Último

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?Igalia
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
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 TerraformAndrey Devyatkin
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
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...Neo4j
 
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 WorkerThousandEyes
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
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 FresherRemote DBA Services
 
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 AutomationSafe Software
 

Último (20)

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?
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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...
 
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
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
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
 

Joshfire Factory: Building Apps for Billion of Devices

  • 1. Building Apps for Billions of Devices @tidoust 1 June 2012 Over the Air, Bletchley Park, UK Friday, June 1, 12
  • 2. The about page François Daoust / @tidoust Startup luver since 2000 MotionBridge - bubble startup - 6 years Microsoft - oldish? startup - 2 years W3C - one Web startup - 4 years Joshfire - Factory startup - 0.523487 years and counting “Relever le défi du Web mobile” with @dontcallmedom (a book written in French, how weird...) Friday, June 1, 12
  • 3. Talking about Connected objects Cross-device App generation Combinatorial explosion Web standards One Web... Oh boy, that old concept, again?!? Why? Friday, June 1, 12
  • 4. The Internet of Things fuckyeahinternetfridge.tumblr.com Friday, June 1, 12
  • 5. The Internet of Things 2020: 25 Billion devices Friday, June 1, 12
  • 7. Fragmentation at all levels Form factors Platforms & Stores Perfs & Features UIs SDKs Java C++ C# JavaScript ObjC CE-HTML Friday, June 1, 12
  • 9. HTML5 is the wave But where are the surfboards? Friday, June 1, 12
  • 10. In other words... Why must I install & master 42 different SDKs to build my apps? Why/WTF do I have to start each of my apps (almost) from scratch for each platform? Friday, June 1, 12
  • 11. Where is the WordPress for Apps? Friday, June 1, 12
  • 13. Joshfire Factory for developers Tech overview Friday, June 1, 12
  • 14. New app? Start from a template Import your code Customize w/ addons package.json Fork it Framework agnostic A few examples of templates => Friday, June 1, 12
  • 19. Data sources Implemented in JS (wrappers for APIs, DBs, ...) Client and/or server-side (perfs, security, cross-origin restrictions) Standard-friendly libraries (http, xml, base64, async, _, iso8601...) Normalization w/ schema.org Can define configuration options => form in Factory (based on JSON Schema) Friday, June 1, 12
  • 20. Add-ons Hooks everywhere: HTML body/head Build time Friday, June 1, 12
  • 21. Build & deploy everywhere Native apps: Cordova, Custom containers Web apps: Push to hosting partners, S3, FTP, ... TVs, obscure platforms: VMs with SDKs on our side The sky is the limit Custom hooks, stores, platforms, ... Linux ISOs Node.js Friday, June 1, 12
  • 22. Money? Marketplace for templates, data, add-ons, deploys Define your upfront or monthly pricing, if any 70/30 rev share Contact us Friday, June 1, 12
  • 24. Data normalization? Lots of service providers... and counting! One service provider = One API One service provider = One response format combinatorial explosion! Friday, June 1, 12
  • 25. Example with images Flickr Instagram Tumblr { { { "id": "6599755345", "type": "image", "blog_name": "joshfiretest", "title": "A VW bus in front of lake", "created_time": "1338466731", "id": 20168207596, "description": { "link": "http://[...]/LSm7fMuskm/", "post_url": "http://[...]/chaumont-with", "_content": "Riding an old Volkswagen "images": { "type": "photo", bus!" "thumbnail": { "date": "2012-03-30 13:10:11 GMT", }, "url": "http://[...]/761.jpg", "timestamp": 1333113011, "dateupload": "1325245258", "width": 150, "caption": "<p>Picture <strong>taken</ "datetaken": "2011-12-30 03:40:58", "height": 150 strong> at Parc des Buttes Chaumont. (with "datetakengranularity": "0", }, HTML in the caption ;)).</p>", "ownername": "tidoust", }, "photos": [ "latitude": 47.582083, "caption": { { "longitude": -120.257034, "created_time": "1338466755", "caption": "", "accuracy": "10", "text": "Created with #factory", "original_size": { "url_sq": "http://[...]/98cd3a90e9_s.jpg", }, "width": 1280, "height_sq": 75, "id": "203396146901207334_38633761", "height": 1280, "width_sq": 75, "user": { "url": "http://[...]/1280.jpg" "url_l": "http://[...]/98cd3a90e9_b.jpg", "username": "fungoku", } "height_l": "768", "profile_picture": "http://[...]/36391.jpg", } "width_l": "1024" } ] } } } Friday, June 1, 12
  • 27. JSON serialization { "@type": "ImageObject", "url": "http://[...]chaumont", "author": [{ "@type": "Person", "name": "joshfire" }], "datePublished": "2012-03-30T13:10:11Z", "name": "Picture taken at Parc des Buttes Chaumont. (with HTML in the caption ;))", "contentURL": "http://[...]/1280.jpg", "width": 1280, "height": 1280 } Friday, June 1, 12
  • 28. @type for a JS property, seriously ?!? Friday, June 1, 12
  • 29. Yes, coming from JSON-LD, “LD” for Linked Data That’s Semantic Web for dummies developers Friday, June 1, 12
  • 30. Define the @context { "@context": { "schema": "http://schema.org", "Person": "schema:Person", "name": "schema:name", "foaf": "http://xmlns.com/foaf/0.1/" }, "@type": "Person", "name": "Francois Daoust", "foaf:nick": "tidoust" } ... and proceed as usual Friday, June 1, 12
  • 31. Meanwhile, in templates... // Retrieve feed from “some” service provider. // No need to know which one! var news = Joshfire.factory.getDataSource("news"); news.find({}, function (err, data) { if (err) { // An error occurred (network, service unavailable, etc.) } else { // Parse and store resulting data _.each(data.entries, function (item, idx) { var process = function (item) { // No need to know where the item comes from! } return process(item); }); } }); Friday, June 1, 12
  • 32. Designing templates Thou shalt share code across devices Thou shalt think Responsive Web Design Thou shalt use feature detection Thou shalt “give your two cents” in responsive image talks ... and that shall not be enough, I’m afraid :-( Friday, June 1, 12
  • 33. In practice Different versions for different classes of devices (hard to use the same version on TV!) User-Agent sniffing is still useful in 2012 (no, it does not mean the world is coming to an end) Fragmentation requires using all sorts of shims Testing and fixing on actual devices consumes the time that you don’t have Friday, June 1, 12
  • 34. Open Source is great! ACE iScroll oauth Almond jQuery openid async jQuery File Upload Plugin PhotoSwipe Backbone jQuery UI Recurly.js bcrypt jquery.simplemodal RequireJS Bootstrap jquery.tmpl restler browserify JSV (JSON-schema- rimraf colors validator) sax connect knox semver connect-mongo less Transloadit jQuery SDK ejs mime uglify-js es5-shim mkdirp underscore everyauth mongodb useragent express mongoose Wink Toolkit formidable mustache wysihtml5 hashlib node.js xml2js history node-statsd yamlparser hooks node-uuid Zepto Friday, June 1, 12
  • 35. Developer doc at: http://developer.joshfire.com Friday, June 1, 12
  • 36. Factory .next Upcoming features Friday, June 1, 12
  • 37. Upcoming More templates – hey, you can write templates! More datasources – hey, you can write datasources! More deploys Datasources operators à la Yahoo! Pipes Local storage, offline support Back-end / Front-end – mixing the best of two worlds Friday, June 1, 12
  • 39. Summary The future is full of connected objects and it’s going to be cool :-) Combinatorial explosion is bad for your hair =|:-( Web standards forever! ♥ Factor your apps to save time and $ Linked Data is good and you’re already using it ;-) Friday, June 1, 12
  • 41. The largest JavaScript conference in France http://dotjs.fr Friday, June 1, 12
  • 42. Date & Venue 30 November 2012 (so before the end of the world) Paris, France at Le 104 (www.104.fr) Expecting 400 people Tickets available! An option is pending for a bigger venue Friday, June 1, 12
  • 43. First confirmed speakers (1) Jeremy Ashkenas Created CoffeeScript, Backbone.js, Underscore.js http://ashkenas.com Mathias Bynens Created jsperf.com, contributes to HTML5 Boilerplate http://mathiasbynens.be Christian Amor Kvalheim Created the MongoDB driver for Node.js http://christiankvalheim.com Friday, June 1, 12
  • 44. First confirmed speakers (2) Ricardo Cabello aka Mr.doob Created Three.js & many acclaimed JavaScript demos http://mrdoob.com Alex Russell Created Dojo, member of ECMA TC39 (JavaScript standards) http://infrequently.org Bert Belder Member of the Node.js core team https://github.com/piscisaureus Many more world-class speakers to be announced! Friday, June 1, 12
  • 45. Thank you for your attention! Questions? @tidoust francois@joshfire.com factory.joshfire.com Friday, June 1, 12