strategies to make your mobile apps feel all the feels!
Boost Your Apps' Emotional Intelligence
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4213251/IMG_8654.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Jen Looper
Progress
Senior Developer Advocate
Who am I?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4213263/IMG_3405.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Help!
My apps are stupid and boring
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4083980/44b64251452694769789c9100bc3878e.jpg)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Let's fix that!
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
"Make Your App Smarter"
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4505621/IMG_3646.png)
"smart" = more human
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Let's build an empathetic recipe app!
- An IoT integration so your app can 'feel' and recommend
- A way for your app to analyze food and suggest recipes to cook
- A way for your app to analyze composed dishes and determine whether they might be easy to prepare
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4234122/IMG_8285.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Tools:
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4319884/ng2-logo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4319885/nativescript-logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4319888/logo_firebase_1920px_clr.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Let's talk about NativeScript
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
NativeScript is…
an open source framework for building truly native mobile apps with JavaScript. Use web skills, like TypeScript, Angular and CSS, and get native UI and performance on iOS and Android.
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3449704/nativescript-logo.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
NativeScript is the best tool for cross-platform native app development 🎉
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3449704/nativescript-logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4228728/IMG_8080.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3449704/nativescript-logo.png)
Rich, animated, “no compromise” native UI
(with shared UI code)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3493381/demo.gif)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3449704/nativescript-logo.png)
You know JavaScript? You know NativeScript!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3492898/Picture3.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4319882/logo.png)
Write once...
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3449704/nativescript-logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3492914/Picture5.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Craft the UI with XML
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3449704/nativescript-logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3492923/Picture6.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Built plugins with native libraries
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3449704/nativescript-logo.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3492945/Picture8.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
...or use the Marketplace for plugins
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3449704/nativescript-logo.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4319883/Screenshot_2017-11-10_19.04.18.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/3449704/nativescript-logo.png)
NativeScript community Slack channel
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4228739/IMG_5593.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4533469/Screenshot_2018-01-22_13.57.00.png)
Presenting: QuickNoms
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4505649/logo_3x.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
A web and mobile app for
quick 'n' easy recipes
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4087704/Simulator_Screen_Shot_Aug_31__2017__4.28.43_PM.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4105251/Simulator_Screen_Shot_Sep_7__2017__4.59.58_PM.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4105252/Simulator_Screen_Shot_Sep_7__2017__5.06.29_PM.png)
Powered by Firebase & NativeScript
Submit your recipes on the web!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4105308/Screenshot_2017-09-07_17.26.59.png)
QuickNoms.com
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Mobile App Features:
Algolia search
Firebase Remote Config marquee
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4105252/Simulator_Screen_Shot_Sep_7__2017__5.06.29_PM.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4105263/Simulator_Screen_Shot_Sep_7__2017__5.10.50_PM.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Move from a simple master/detail app to...
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4229117/IMG_9885.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Make your app 'sensitive'
Build an IoT integration to craft a recipe recommender based on room temperature
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4105265/Simulator_Screen_Shot_Sep_7__2017__5.12.49_PM.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Add a sensor
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4087589/Photon-wo-Headers-WiFi-Module-sideview-resized_640x480.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Build the device
wifi-connected Particle Photon + temperature sensor - about $25 total
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4087662/Screenshot_2017-08-31_16.07.28.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Flash code to the Photon
Photon reads temp every 10 secs, writes data to Particle Cloud
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4533478/Screenshot_2018-01-22_13.55.41.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Build webhook
webhook lives in Particle Cloud, watches for data written by Photon to cloud
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4087692/Screenshot_2017-08-31_16.14.47.png)
Webhook writes to Firebase
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4087690/Screenshot_2017-08-31_16.21.22.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
app consumes data and reacts
Select recipes tagged as 'hot' or 'cold' - atmosphere type recipes
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Observable subscribes to
temperature saved to Firebase
ngOnInit(): void {
this.recipesService.getTemperatures(AuthService.deviceId).subscribe((temperature) => {
this.temperature$ = temperature[0].temperature;
this.getRecommendation(this.mode)
})
}
getRecommendation(mode){
if (mode == 'F'){
if (Number(this.temperature$) > 70) {
this.gradient = this.hotGradient;
this.recommendation = this.hotRecommendation;
}
else {
this.gradient = this.coolGradient;
this.recommendation = this.coolRecommendation;
}
}
...
Scale the idea
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4088031/unnamed.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4533521/Screenshot_2018-01-22_14.10.34.png)
demo
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Add some Machine Learning
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4229126/IMG_3796.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Machine Learning + Mobile = ❤️
think of the possibilities for photos, video, audio
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
ML is easy
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4089276/Screenshot_2017-09-01_07.58.51.png)
not
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
What even is machine learning?
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4533584/machine-learning.jpg)
a way to give “computers the ability to learn without being explicitly programmed.”
Machine Learning is:
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
"A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E.” (Tom Mitchell, 1997).
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4244883/IMG_2885.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
How to make a machine learn*
Gather a lot of data (images, sounds)
Divide that data into a training set and a test set
Use an algorithm to train a model with the training set by pairing input with expected output
- The training set is categorized (sorted by hand or by machine)
- The test set is uncategorized
*"supervised learning"
Use the test set to test the accuracy of the training
rinse & repeat
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
ML in the wild
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Good uses of ML
StitchFix combines ML + human curation
Formulas to pick out clothes based on customer input
Formulas to pair a shopper with a stylist
Formulas to calculate distance of warehouse to customer
Algorithms to search and classify clothing trends to recommend
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4234413/office_stitchfix_logo.jpg)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4234436/IMG_8661.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Scary uses of ML
install a ton of surveillance cameras
get really good at ml-powered facial recognition
match faces to IDs
monitor emotions...and manipulate them
invisibly track location
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4234433/Screenshot_2017-10-17_15.26.48.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4234308/IMG_5090.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
good and bad?
MIT students used mapping data and crafted an algorithm to optimize school bus routes
50 superfluous routes eliminated
$3-5 million saved
50 union bus drivers out of work
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4234509/images.duckduckgo.jpg)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
with great power
comes great responsibility!
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4319967/IMG_4400.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
DIY Machine Learning is hard
you need a lot of firepower & skillz
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Use a third party with pretrained models
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4089627/logo.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4089627/logo.png)
Specialists in image analysis
Took top 5 awards in 2013 ImageNet challenge
Innovative techniques in training models to analyze images
Offer useful pre-trained models like "Food" "Wedding" "NSFW"
Or, train your own model!
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
"Does this dish qualify as a QuickNom?"
Use Clarif.ai's pretrained Food model to analyze images of plates of food for inspiration
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4105326/FruitSalad_DT.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4105327/images.duckduckgo-1.jpg)
probably not!
might be!
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Take a picture
takePhoto() {
const options: camera.CameraOptions = {
width: 300,
height: 300,
keepAspectRatio: true,
saveToGallery: false
};
camera.takePicture(options)
.then((imageAsset: ImageAsset) => {
this.processRecipePic(imageAsset);
}).catch(err => {
console.log(err.message);
});
}
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Send it to Clarif.ai via
REST API call
public queryClarifaiAPI(imageAsBase64):Promise<any>{
return http.request({
url: AuthService.clarifaiUrl,
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Key " + AuthService.clarifaiKey,
},
content: JSON.stringify({
"inputs": [{
"data": {
"image": {
"base64": imageAsBase64
}
}
}]
})
})
.then(function (response) {
return response
}
)}
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Analyze returned tags
.then(res => {
this.loader.hide();
try {
let result = res.content.toJSON();
let tags = result.outputs[0].data.concepts.map( mc => mc.name + '|' + mc.value );
let ingredients = [];
tags.forEach(function(entry) {
let prob = entry.split('|');
prob = prob[1];
let ingred = entry.split('|');
if(prob > 0.899){
ingredients.push(ingred[0])
}
});
//there should be between four and eight discernable ingredients
if (ingredients.length >= 4 && ingredients.length <= 8) {
alert("Yes! This dish might qualify as a QuickNom! It contains "+ingredients)
}
else {
alert("Hmm. This recipe doesn't have the qualifications of a QuickNom.
Try again!")
}
}
if between 4 & 8 ingredients are listed with over .899 certainty,
it's a QuickNom!
QuickNom dishes have a few easy-to-see, simple ingredients
demo
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
"What can I make with an avocado?"
Use Google's Vision API to match images with recipes
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4105344/images.duckduckgo-1.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Do it all with Google!
Leverage its consumption of millions of photos via Google Photos with Cloud Vision API
- Label Detection
- Explicit Content Detection
- Logo Detection
- Landmark Detection
- Face Detection
- Web Detection (search for similar)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
takePhoto() {
const options: camera.CameraOptions = {
width: 300,
height: 300,
keepAspectRatio: true,
saveToGallery: false
};
camera.takePicture(options)
.then((imageAsset: ImageAsset) => {
this.processItemPic(imageAsset);
}).catch(err => {
console.log(err.message);
});
}
Take a picture
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
public queryGoogleVisionAPI(imageAsBase64: string):Promise<any>{
return http.request({
url: "https://vision.googleapis.com/v1/images:annotate?key="+AuthService.googleKey,
method: "POST",
headers: {
"Content-Type": "application/json",
"Content-Length": imageAsBase64.length,
},
content: JSON.stringify({
"requests": [{
"image": {
"content": imageAsBase64
},
"features" : [
{
"type":"LABEL_DETECTION",
"maxResults":1
}
]
}]
})
})
.then(function (response) {
return response
}
)}
Send it to Google
this.mlService.queryGoogleVisionAPI(imageAsBase64)
.then(res => {
let result = res.content.toJSON();
this.ingredient = result.responses[0].labelAnnotations.map( mc => mc.description );
this.ngZone.run(() => {
this.searchRecipes(this.ingredient)
})
});
Grab the first label returned and send to Algolia search
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
demo
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Looking forward
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4229156/IMG_7343.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
DIY machine learning
made a little easier!
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Machine learning on device
What if you don't want to make a bunch of REST API calls?
What if you need offline capability?
What if you need to reduce costs? (API calls can add up)
What if you need to train something really custom?
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Machine learning on device
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4107755/c35ebf2d-ee94-4448-8fae-16420e7cc4ed.png)
Now landed in iOS 11: Core ML
Train a model, let Core ML process it for your app on device
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Machine learning on device
TensorFlow Mobile
Designed for low-end Androids, works for iOS and Android
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4107779/classify1.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4107781/stylize1.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4107782/detect1.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4107798/tf.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
New! Hot! TensorFlow Lite!
next-gen version of TensorFlow for mobile: 11/17 developer release
"on-device machine learning inference with low latency and a small binary size."
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4399578/tflite-architecture.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4399593/IMG_9089.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Featuring:
- a new model file format, based on "FlatBuffers" - smaller/faster than ProtocolBuffers
- new mobile-optimized interpreter
- an interface to leverage hardware acceleration (Android)
- small footprint! 200-300kb!
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4107798/tf.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
TensorFlow on iOS
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4107798/tf.png)
demo:
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4229174/IMG_1508.png)
@jenlooper
![](https://s3.amazonaws.com/media-p.slid.es/uploads/196305/images/4310587/images.duckduckgo.jpg)
Copy of Boost Your Apps' Emotional Intelligence with Machine Learning
By Ignacio Fuentes
Copy of Boost Your Apps' Emotional Intelligence with Machine Learning
shorter version - ngEurope
- 900