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

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Recently uploaded (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

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