SlideShare a Scribd company logo
1 of 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

More Related Content

Similar to 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
 

Similar to 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
 

Recently uploaded

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Recently uploaded (20)

Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
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
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

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