SlideShare a Scribd company logo
1 of 152
Download to read offline
How might we create a
simple and intuitive mobile
consumption experience
for Medium?
How might we create a
simple and intuitive
mobile consumption
experience for Medium?
How might we create a
delightful, simple and intuitive
mobile consumption
experience for Medium?
History stack Future stack
Cover Flow
<html>?
• 60 FPS
• Memory
• Parallax
UIKit &
TextKit
{	
"content": {	
...	
"bodyModel": {	
"elements": <Elements>,	
"sections": <Sections>	
},	
...	
},	
}
{	
"name": "8419",	
"type": 1,	
"text": "...song Walking in LA?",	
"markups": [	
{	
"type": 3,	
"start": 300,	
"end": 315,	
"href": "https://somewhere.com",	
"title": "",	
"rel": ""	
}	
]	
}
{	
"name": "24cc",	
"type": 4,	
"text": "",	
"markups": [],	
"layout": 1,	
"metadata": {	
"id": "1*WwSQ20QNvf-WovuMLLslEA.jpeg",	
"originalWidth": 453,	
"originalHeight": 301	
}	
}
{	
"name": "38d2",	
"startIndex": 6	
}
{	
"name": "7b28",	
"startIndex": 31,	
"backgroundImage": {	
"id": "1*DhgXe8j0YqltMNM6-pRy6Q.jpeg",	
"originalWidth": 1920,	
"originalHeight": 1200	
},	
"textLayout": 2,	
"imageLayout": 2	
}
CoverFlowView
CoverFlowView
PostView
CoverFlowView
PostView
SectionView
CoverFlowView
PostView
SectionView
SectionImageView
CoverFlowView
PostView
SectionView
SectionImageView
SectionContentView
CoverFlowView
PostView
SectionView
SectionContentView
ElementElementElement
SectionImageView
CoverFlowView
PostView
SectionView
SectionContentView
ElementElementElement
SectionImageView
CoverFlowView
PostView
SectionView
SectionContentView
ElementElementElement
SectionImageView
Element
CoverFlowView
PostView
SectionView
SectionContentView
ElementElementElement
SectionImageView
Element
CoverFlowView
PostView
SectionView
SectionContentView
ElementElement
SectionImageView
Element
CoverFlowView
PostView
SectionView
SectionContentView
ElementElement
SectionImageView
Element
Sect
Section
SectionC
Elemen
CoverFlowView
PostView
View
ntentView
ent
ageView
Element
SectionView
SectionImageView
SectionContentView
ElementElement
CoverFlowView
PostView
SectionView
SectionImageView
SectionContentView
ElementElement
CoverFlowView
PostView
SectionView
SectionImageView
SectionContentView
ElementElement
CoverFlowView
PostView
SectionView
SectionImageView
SectionContentView
ElementElement
Sect
Section
CoverFlowView
PostView
View
ageView
ntentView
lement
SectionView
SectionImageView
SectionC
Elemen
CoverFlowView
PostView
SectionView
SectionImageView
SectionC
Elemen
CoverFlowView
PostView
SectionView
SectionImageView
SectionContentView
Element
CoverFlowView
PostView
SectionView
SectionImageView
SectionContentView
ElementElement
CoverFlowView
PostView
SectionView
SectionImageView
SectionContentView
ElementElement
Thank You!
Questions?
!
Grant Oladipo
grant@medium.com
@kocodude
Shapes & things
Building the data layer of the Medium iOS app
!
!
Elizabeth Ford
@infraredflower
Title
Body text
Other stuff
User
!
Collection
User’s name
Bio
List of stories
• How will we deal with the possibility of API
changes?
• especially since the app will be long-lived
• How do we minimize the number of requests
from the iOS app to the server?
• How can we avoid making separate API routes
for the iOS app (and every client thereafter)?
Questions…
Clearly bad ideas
• Make multiple requests to display
one Post, User, or Collection
• Make new iOS routes with exactly
what we need
• Only save full objects
Clearly bad ideas
• Save partial objects and if we need a
full object, just check to see if all the
fields are set in the object in the
cache
• Is the field supposed to be “” or
was it never set?
Speaking of which…
• How should we deal with
merging two objects?
• Merging a full post and
a partial post
Example
Shapes!
Shapes!
Saving objects
Merging objects
Complexity hidden by data layer
• merges objects
• determines when to make
network requests
Complexity hidden by data layer
What about dealing with a changing API?
• explicit definitions for the
resources returned by API
endpoints
• tests based on these definitions
Possible areas for improvement
• one service to return any shape
(instead of a separate data
service for each type of object)
• autogenerate shape definitions
from protocol buffers (on both
server and client)
• easy to add features on the iOS side
• easy to make changes on the server
side without breaking the iOS client
• minimize # of server requests
Shapes!
Thank You!
Questions?
!
Elizabeth Ford
eford@medium.com
@infraredflower
Meet the Singletons
Jimmy O’Neill
Engineer, Medium
@jmyonl
+ (id)sharedResource {
static id _instance;
static dispatch_once_t onceToken;
!
dispatch_once(&onceToken, ^{
_instance = [[Resource alloc] init];
});
!
return _instance;
}
A singleton restricts the instantiation of a class to one object.
They are often lazily instantiated.
They can be accessed globally by any module of a program.
UIApplication
NSFileManager
NSNotificationCenter
NSURLSession
Since singletons are so commonplace in CocoaTouch, many developers overuse them.
A lot of this:
Singletons are bad!!
!
Not a lot of this:
Singletons can be bad because ____. Here’s a real example!
!
!
!
I’m going to focus on this:
Singletons can be bad because ____. Here’s a real example!
- (AuthCredential *)mediumAuthCredential;
!
- (void)saveMediumAuthCredential:(AuthCredential *)credential;
AuthCredentialDataService
Keychain
AuthCredentialDataService
- (void)fetch:(NetRequest *)request
completion:(void (^)(NetResponse *, NSError *))completion;
Net
AuthCredentialDataService
NetNet
- (void)fetchPostById:(NSString *)postId
completion:(void(^)(Post *post, NSError *error))completion;
PostService
Net
AuthCredentialDataService
PostService
- (void)fetchPostViewDataWithPostId:(NSString *)postId
completion:(void(^)(Post *post,
PostViewModel *postViewModel,
PostUserData *postUserData,
NSError *error))callback;
PostViewService
PostService
Net
AuthCredentialDataService
PostViewService
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService
PostViewController
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService
PostViewController
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService
Data dependence
Time dependence
AuthCredentialDataService
PostViewController
Time dependence isn’t an
issue until the underlying
data starts changing.
PostViewController
PostViewService
PostService
Net
AuthCredentialDataServiceAuthCredentialDataService
PostViewController
If your app supports sign out,
the underlying authentication
data is changing.
PostViewController
PostViewService
PostService
Net
AuthCredentialDataServiceAuthCredentialDataService
PostViewController
What problems does time
dependence cause?
- Functional impurity
- Leaky abstraction
- Background task failures
- Difficult to test
PostViewController
PostViewService
PostService
Net
AuthCredentialDataServiceAuthCredentialDataService
PostViewController
Example.
PostViewController
PostViewController
LoginViewController
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService Logged in
1. User bookmark action is queued
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService Logged in
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId];
});
1. User bookmark action is queued
2. User signs out
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService Logged out
LoginViewController
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService Logged out
LoginViewController
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService Logged out
LoginViewController
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService Logged out
LoginViewController
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService Logged out
LoginViewController
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
4. Bookmark request 401s
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService Logged out
LoginViewController
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
4. Bookmark request 401s
5. PostViewController is cleaned up
PostViewService
PostService
Net
AuthCredentialDataService Logged out
LoginViewController
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId];
});
How do we fix this?
Option 1: YOLO
Advantages!
- Very little work
- No testing needed
- Funny later in your career
Disadvantages!
- Horrible UX
- Async bookmark operation still fails
- (void)logOut {
// nuke everything
exit(0);
}
Option 2: Embrace time dependence
Advantages!
- Doesn’t require refactoring
Disadvantages!
- Requires global knowledge of all the apps components
- Affects other, disjunct service consumers
- Difficult to test
- Async bookmark operation still fails
- (void)logOut {
// Synchronously wipe all the user-dependent data
[[Services authCredentialDataService] wipeData];
// …
!
// Reload UI with new global data
[_appController reload];
}
Option 3: Dependency inject your user-dependent data
- Eliminates time dependence in the service layer
- Gracefully supports switching authentication contexts
- Easy to test interfaces with a mock Session object
- Async bookmark operation succeeds
- (void)logOut {
// Create an unauthenticated session
Session *newSession = [Session loggedOutSession];
!
// Reload UI with logged out session
[_appController loadSession:newSession];
}
@interface Session : NSObject
!
- (instancetype)initWithAuth:(AuthCredential *)authCredential;
!
@property (nonatomic, strong, readonly) NSString *sessionId;
@property (nonatomic, strong, readonly) AuthCredential *authCredential;
!
- (BOOL)isAuthenticated;
!
@end
The Session object directly models user-dependent state,
and is injected into objects that need it.
- (void)fetch:(NetRequest *)request
completion:(void (^)(NetResponse *, NSError *))completion;
Net
AuthCredentialDataService
Net
Net
AuthCredentialDataService
Net
Session
Net
Net
Net
Session
- (void)fetch:(NetRequest *)request
session:(Session *)session
completion:(void (^)(NetResponse *, NSError *))completion;
Net
PostService
Net
Session
- (void)fetchPostById:(NSString *)postId
session:(Session *)session
completion:(void(^)(Post *post, NSError *error))completion;
PostService
PostViewService
PostService
Session
Net
- (void)fetchPostViewDataWithPostId:(NSString *)postId
session:(Session *)session
completion:(void(^)(Post *post,
PostViewModel *postViewModel,
PostUserData *postUserData,
NSError *error))callback;
PostViewService
PostViewService
PostService
Net
PostViewController
Session
[[PostViewController alloc] initWithPostId:postId
session:session];
PostViewController
Session
PostViewController
PostViewController
LoginViewController
1. User bookmark action is queued
PostViewService
PostService
Net
PostViewController
Logged in
Session
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId session:_session];
});
1. User bookmark action is queued
2. User signs out
PostViewService
PostService
Net
PostViewController
Logged in
Session
LoginViewController
Logged out
Session
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId session:_session];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
PostViewService
PostService
Net
PostViewController
Logged in
Session
LoginViewController
Logged out
Session
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId session:_session];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
PostViewService
PostService
Net
PostViewController
Logged in
Session
LoginViewController
Logged out
Session
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId session:_session];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
PostViewService
PostService
Net
PostViewController
Logged in
Session
LoginViewController
Logged out
Session
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId session:_session];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
4. Bookmark action succeeds
PostViewService
PostService
Net
PostViewController
Logged in
Session
LoginViewController
Logged out
Session
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId session:_session];
});
1. User bookmark action is queued
2. User signs out
3. Bookmark action is dequeued
4. Bookmark action succeeds
5. PostViewController and logged in
Session are cleaned up
PostViewService
PostService
Net
LoginViewController
Logged out
Session
dispatch_async(_backgroundQueue, ^{
[[Services postView] bookmark:_postId session:_session];
});
Think back to the original decision.
Net
AuthCredentialDataService
Keychain
Net
It appears innocent without context.
Net
AuthCredentialDataService
Keychain
Net
Let’s do our best to recognize!
the larger context earlier.
PostViewController
PostViewService
PostService
Net
AuthCredentialDataService
Data dependence
Time dependence
AuthCredentialDataService
PostViewController
Singletons are global state.
Singletons assume that the lifetime of the state they encapsulate is equal
to the lifetime of the program.
Singletons are not evil.
But often, dependency injection is a sounder option.
Thank You!
Questions?
!
Jimmy O’Neill
jimmy@medium.com
@jmyonl
Designing an iOS
Distribution Pipeline
Vinicius Baggio Fuentes
Delivery on the Web
• Feature Toggle
• Tracking and measuring
• Rolling releases
• Multiple deploys a day
Short deployment time
is key
How can we do the
same for apps?
Challenges
• Pre-App Store distribution is complicated
• Slow response time on App Store approvals
Fast release requirements
• Over-the-air updates
• Crash report system
• Authorization server
• Feature toggles
• Versioning system
• Distribution channels
OTA updates, crash reports
and authorization
• Crashlytics
• TestFlight / Apple’s upcoming beta program
• HockeyApp
Feature toggle
• A/B Testing
• Long running feature development
• Emergencies
VARIANT_ENABLE_RECOMMEND_NOTES_COMPOSITION
Feature toggle tools
• GroundControl, SkyLab & related
projects
• Roll-your-own (not recommended)
Versioning system:

semantic versioning
master 640a0a5 638b3b7
master 640a0a5
build-1.3
638b3b7
dde3123
build-1.3.0
master 640a0a5
build-1.3
638b3b7 03dc0b5
dde3123
build-1.3.0
master 640a0a5
build-1.3
638b3b7 03dc0b5 4aee8cd
dde3123 bb24c74
build-1.3.0
master 640a0a5
build-1.3
638b3b7 03dc0b5 4aee8cd 04d773b
dde3123 bb24c74 f1e48af
build-1.3.1
build-1.3.0
master 640a0a5
build-1.3
build-1.4
638b3b7 03dc0b5 4aee8cd 04d773b
dde3123 bb24c74 f1e48af
build-1.3.1
f1e48af
build-1.3.0
build-1.4.0
Distribution channels
Distribution channels
Developers Medium Staff
On merge
Version 1.4.90
Distribution channels
Version 1.4.90
Developers Medium Staff Trusted testers
On merge After a day
Distribution channels
Version 1.4.90
Developers Medium Staff Trusted testers Beta testers
On merge After a day After a week
Lessons Learned
• Xcconfig files and -derivedDataPath compiler
flag helps builds being deterministic
• Plist manipulation in Python, nomad-cli tools (esp.
Shenzhen, Cupertino)
Xcconfig example
#include "base.xcconfig"
#include "Servers/medium.xcconfig"
#include "Build/config-debug.xcconfig"
!
MEDIUM_DISTRIBUTION_CHANNEL = mediumStaff
Lessons Learned [2]
• Make it easy for everyone to see which version of
the app each group has
• Easy visibility and communication on features of
each of these groups
• Automate everything, consider Jenkins CI over
Xcode Bots
Thanks!
• References:
• www.nomad-cli.com
• jenkins-ci.org
• crashlytics.com
• https://github.com/mattt/GroundControl
• http://semver.org
• hockeyapp.net
• http://techcrunch.com/2014/06/02/ios-testflight/
Vinícius Baggio Fuentes
vinny@medium.com
@vinibaggio
Thanks for coming!

More Related Content

What's hot

Spray - Build RESTfull services in scala
Spray - Build RESTfull services in scalaSpray - Build RESTfull services in scala
Spray - Build RESTfull services in scalaSandeep Purohit
 
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...SPTechCon
 
Getting Started with Javascript
Getting Started with JavascriptGetting Started with Javascript
Getting Started with JavascriptAkshay Mathur
 
Angular 2 Component Communication - Talk by Rob McDiarmid
Angular 2 Component Communication - Talk by Rob McDiarmidAngular 2 Component Communication - Talk by Rob McDiarmid
Angular 2 Component Communication - Talk by Rob McDiarmidAmrita Chopra
 
MSFT Dumaguete 061616 - Building High Performance Apps
MSFT Dumaguete 061616 - Building High Performance AppsMSFT Dumaguete 061616 - Building High Performance Apps
MSFT Dumaguete 061616 - Building High Performance AppsMarc Obaldo
 
Advanced SharePoint Web Part Development
Advanced SharePoint Web Part DevelopmentAdvanced SharePoint Web Part Development
Advanced SharePoint Web Part DevelopmentRob Windsor
 
MAF push notifications
MAF push notificationsMAF push notifications
MAF push notificationsLuc Bors
 
Building Web Service Clients with ActiveModel
Building Web Service Clients with ActiveModelBuilding Web Service Clients with ActiveModel
Building Web Service Clients with ActiveModelpauldix
 
Distributing information on iOS
Distributing information on iOSDistributing information on iOS
Distributing information on iOSMake School
 
In memory OLAP engine
In memory OLAP engineIn memory OLAP engine
In memory OLAP engineWO Community
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and ImprovedTimothy Fisher
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session ManagementFahad Golra
 
Lyudmila Zharova: Developing Solutions for SharePoint 2010 Using the Client O...
Lyudmila Zharova: Developing Solutions for SharePoint 2010 Using the Client O...Lyudmila Zharova: Developing Solutions for SharePoint 2010 Using the Client O...
Lyudmila Zharova: Developing Solutions for SharePoint 2010 Using the Client O...SharePoint Saturday NY
 
Jasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casJasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casellentuck
 
Use Windows Azure Service Bus, BizTalk Services, Mobile Services, and BizTalk...
Use Windows Azure Service Bus, BizTalk Services, Mobile Services, and BizTalk...Use Windows Azure Service Bus, BizTalk Services, Mobile Services, and BizTalk...
Use Windows Azure Service Bus, BizTalk Services, Mobile Services, and BizTalk...BizTalk360
 
Breaking the limits_of_page_objects
Breaking the limits_of_page_objectsBreaking the limits_of_page_objects
Breaking the limits_of_page_objectsRobert Bossek
 
Apex Code Analysis Using the Tooling API and Canvas
Apex Code Analysis Using the Tooling API and CanvasApex Code Analysis Using the Tooling API and Canvas
Apex Code Analysis Using the Tooling API and CanvasSalesforce Developers
 
Silverlight 2 For Developers
Silverlight 2 For DevelopersSilverlight 2 For Developers
Silverlight 2 For DevelopersMithun T. Dhar
 
Using the Tooling API to Generate Apex SOAP Web Service Clients
Using the Tooling API to Generate Apex SOAP Web Service ClientsUsing the Tooling API to Generate Apex SOAP Web Service Clients
Using the Tooling API to Generate Apex SOAP Web Service ClientsDaniel Ballinger
 

What's hot (20)

Spray - Build RESTfull services in scala
Spray - Build RESTfull services in scalaSpray - Build RESTfull services in scala
Spray - Build RESTfull services in scala
 
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
Advanced SharePoint 2010 and 2013 Web Part Development by Rob Windsor - SPTec...
 
Getting Started with Javascript
Getting Started with JavascriptGetting Started with Javascript
Getting Started with Javascript
 
Angular 2 Component Communication - Talk by Rob McDiarmid
Angular 2 Component Communication - Talk by Rob McDiarmidAngular 2 Component Communication - Talk by Rob McDiarmid
Angular 2 Component Communication - Talk by Rob McDiarmid
 
MSFT Dumaguete 061616 - Building High Performance Apps
MSFT Dumaguete 061616 - Building High Performance AppsMSFT Dumaguete 061616 - Building High Performance Apps
MSFT Dumaguete 061616 - Building High Performance Apps
 
Advanced SharePoint Web Part Development
Advanced SharePoint Web Part DevelopmentAdvanced SharePoint Web Part Development
Advanced SharePoint Web Part Development
 
iOS 7 SDK特訓班
iOS 7 SDK特訓班iOS 7 SDK特訓班
iOS 7 SDK特訓班
 
MAF push notifications
MAF push notificationsMAF push notifications
MAF push notifications
 
Building Web Service Clients with ActiveModel
Building Web Service Clients with ActiveModelBuilding Web Service Clients with ActiveModel
Building Web Service Clients with ActiveModel
 
Distributing information on iOS
Distributing information on iOSDistributing information on iOS
Distributing information on iOS
 
In memory OLAP engine
In memory OLAP engineIn memory OLAP engine
In memory OLAP engine
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and Improved
 
Lecture 3: Servlets - Session Management
Lecture 3:  Servlets - Session ManagementLecture 3:  Servlets - Session Management
Lecture 3: Servlets - Session Management
 
Lyudmila Zharova: Developing Solutions for SharePoint 2010 Using the Client O...
Lyudmila Zharova: Developing Solutions for SharePoint 2010 Using the Client O...Lyudmila Zharova: Developing Solutions for SharePoint 2010 Using the Client O...
Lyudmila Zharova: Developing Solutions for SharePoint 2010 Using the Client O...
 
Jasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-casJasigsakai12 columbia-customizes-cas
Jasigsakai12 columbia-customizes-cas
 
Use Windows Azure Service Bus, BizTalk Services, Mobile Services, and BizTalk...
Use Windows Azure Service Bus, BizTalk Services, Mobile Services, and BizTalk...Use Windows Azure Service Bus, BizTalk Services, Mobile Services, and BizTalk...
Use Windows Azure Service Bus, BizTalk Services, Mobile Services, and BizTalk...
 
Breaking the limits_of_page_objects
Breaking the limits_of_page_objectsBreaking the limits_of_page_objects
Breaking the limits_of_page_objects
 
Apex Code Analysis Using the Tooling API and Canvas
Apex Code Analysis Using the Tooling API and CanvasApex Code Analysis Using the Tooling API and Canvas
Apex Code Analysis Using the Tooling API and Canvas
 
Silverlight 2 For Developers
Silverlight 2 For DevelopersSilverlight 2 For Developers
Silverlight 2 For Developers
 
Using the Tooling API to Generate Apex SOAP Web Service Clients
Using the Tooling API to Generate Apex SOAP Web Service ClientsUsing the Tooling API to Generate Apex SOAP Web Service Clients
Using the Tooling API to Generate Apex SOAP Web Service Clients
 

Viewers also liked

อุปกรณ์เชื่อมต่อคอมพิวเตอร์
อุปกรณ์เชื่อมต่อคอมพิวเตอร์อุปกรณ์เชื่อมต่อคอมพิวเตอร์
อุปกรณ์เชื่อมต่อคอมพิวเตอร์Bo Yez
 
A importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasA importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasRicardo Serradas
 
Ortografia letras grupo_hache
Ortografia letras grupo_hacheOrtografia letras grupo_hache
Ortografia letras grupo_hacheComando Guerra
 
Diapositivas expo ingles
Diapositivas expo inglesDiapositivas expo ingles
Diapositivas expo inglesSr.dani
 
SR Graduation Gifts
SR Graduation GiftsSR Graduation Gifts
SR Graduation Giftsemilyncahn
 
Preparing for Year End workshop
Preparing for Year End workshopPreparing for Year End workshop
Preparing for Year End workshopPaul LaBrash
 
CiNEMAN-On.ADs DETAIL
CiNEMAN-On.ADs DETAILCiNEMAN-On.ADs DETAIL
CiNEMAN-On.ADs DETAILCiNEMAN
 
Green presentatie graafschap college
Green presentatie graafschap college Green presentatie graafschap college
Green presentatie graafschap college Gewoon Groen
 
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыPositive Development User Group
 
Serie escribo-letras-y-numeros-libros-dismes-muestras-gratuitas
Serie escribo-letras-y-numeros-libros-dismes-muestras-gratuitasSerie escribo-letras-y-numeros-libros-dismes-muestras-gratuitas
Serie escribo-letras-y-numeros-libros-dismes-muestras-gratuitasveronica gomez
 

Viewers also liked (13)

อุปกรณ์เชื่อมต่อคอมพิวเตอร์
อุปกรณ์เชื่อมต่อคอมพิวเตอร์อุปกรณ์เชื่อมต่อคอมพิวเตอร์
อุปกรณ์เชื่อมต่อคอมพิวเตอร์
 
A importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivasA importância da qualidade de software e suas diversas perspectivas
A importância da qualidade de software e suas diversas perspectivas
 
Cuadro comparativo
Cuadro comparativoCuadro comparativo
Cuadro comparativo
 
Ortografia letras grupo_hache
Ortografia letras grupo_hacheOrtografia letras grupo_hache
Ortografia letras grupo_hache
 
Diapositivas expo ingles
Diapositivas expo inglesDiapositivas expo ingles
Diapositivas expo ingles
 
SR Graduation Gifts
SR Graduation GiftsSR Graduation Gifts
SR Graduation Gifts
 
Preparing for Year End workshop
Preparing for Year End workshopPreparing for Year End workshop
Preparing for Year End workshop
 
prawphan
prawphanprawphan
prawphan
 
CiNEMAN-On.ADs DETAIL
CiNEMAN-On.ADs DETAILCiNEMAN-On.ADs DETAIL
CiNEMAN-On.ADs DETAIL
 
Green presentatie graafschap college
Green presentatie graafschap college Green presentatie graafschap college
Green presentatie graafschap college
 
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструментыТехнологии анализа бинарного кода приложений: требования, проблемы, инструменты
Технологии анализа бинарного кода приложений: требования, проблемы, инструменты
 
Big data summary_v2.1
Big data summary_v2.1Big data summary_v2.1
Big data summary_v2.1
 
Serie escribo-letras-y-numeros-libros-dismes-muestras-gratuitas
Serie escribo-letras-y-numeros-libros-dismes-muestras-gratuitasSerie escribo-letras-y-numeros-libros-dismes-muestras-gratuitas
Serie escribo-letras-y-numeros-libros-dismes-muestras-gratuitas
 

Similar to Medium TechTalk — iOS

MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB
 
Building Your First App with MongoDB Stitch
Building Your First App with MongoDB StitchBuilding Your First App with MongoDB Stitch
Building Your First App with MongoDB StitchMongoDB
 
[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade ServerlessKatyShimizu
 
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade ServerlessKatyShimizu
 
[MongoDB.local Bengaluru 2018] Introduction to MongoDB Stitch
[MongoDB.local Bengaluru 2018] Introduction to MongoDB Stitch[MongoDB.local Bengaluru 2018] Introduction to MongoDB Stitch
[MongoDB.local Bengaluru 2018] Introduction to MongoDB StitchMongoDB
 
Tutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchTutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchMongoDB
 
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB
 
Tools and practices for rapid application development
Tools and practices for rapid application developmentTools and practices for rapid application development
Tools and practices for rapid application developmentZoltán Váradi
 
MongoDB Stitch Introduction
MongoDB Stitch IntroductionMongoDB Stitch Introduction
MongoDB Stitch IntroductionMongoDB
 
System insight without Interference
System insight without InterferenceSystem insight without Interference
System insight without InterferenceTony Tam
 
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileIVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileAmazon Web Services Japan
 
Introduction to VIPER Architecture
Introduction to VIPER ArchitectureIntroduction to VIPER Architecture
Introduction to VIPER ArchitectureHendy Christianto
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS BackendLaurent Cerveau
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1Mohammad Qureshi
 
Akka Microservices Architecture And Design
Akka Microservices Architecture And DesignAkka Microservices Architecture And Design
Akka Microservices Architecture And DesignYaroslav Tkachenko
 
Frontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterationsFrontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterationsKarthik Ramgopal
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...Fabio Franzini
 
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...Naoki (Neo) SATO
 
Mobile services on windows azure (part2)
Mobile services on windows azure (part2)Mobile services on windows azure (part2)
Mobile services on windows azure (part2)Radu Vunvulea
 

Similar to Medium TechTalk — iOS (20)

MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB StitchMongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
MongoDB.local Sydney: Evolving your Data Access with MongoDB Stitch
 
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
MongoDB World 2018: Ch-Ch-Ch-Ch-Changes: Taking Your Stitch Application to th...
 
Building Your First App with MongoDB Stitch
Building Your First App with MongoDB StitchBuilding Your First App with MongoDB Stitch
Building Your First App with MongoDB Stitch
 
[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless[NDC 2019] Enterprise-Grade Serverless
[NDC 2019] Enterprise-Grade Serverless
 
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
[NDC 2019] Functions 2.0: Enterprise-Grade Serverless
 
[MongoDB.local Bengaluru 2018] Introduction to MongoDB Stitch
[MongoDB.local Bengaluru 2018] Introduction to MongoDB Stitch[MongoDB.local Bengaluru 2018] Introduction to MongoDB Stitch
[MongoDB.local Bengaluru 2018] Introduction to MongoDB Stitch
 
Tutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB StitchTutorial: Building Your First App with MongoDB Stitch
Tutorial: Building Your First App with MongoDB Stitch
 
MongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDBMongoDB.local Atlanta: Introduction to Serverless MongoDB
MongoDB.local Atlanta: Introduction to Serverless MongoDB
 
Tools and practices for rapid application development
Tools and practices for rapid application developmentTools and practices for rapid application development
Tools and practices for rapid application development
 
MongoDB Stitch Introduction
MongoDB Stitch IntroductionMongoDB Stitch Introduction
MongoDB Stitch Introduction
 
System insight without Interference
System insight without InterferenceSystem insight without Interference
System insight without Interference
 
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & MobileIVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
IVS CTO Night And Day 2018 Winter - [re:Cap] Serverless & Mobile
 
Introduction to VIPER Architecture
Introduction to VIPER ArchitectureIntroduction to VIPER Architecture
Introduction to VIPER Architecture
 
Elements for an iOS Backend
Elements for an iOS BackendElements for an iOS Backend
Elements for an iOS Backend
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
 
Akka Microservices Architecture And Design
Akka Microservices Architecture And DesignAkka Microservices Architecture And Design
Akka Microservices Architecture And Design
 
Frontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterationsFrontend APIs powering fast paced product iterations
Frontend APIs powering fast paced product iterations
 
WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...WebNet Conference 2012 - Designing complex applications using html5 and knock...
WebNet Conference 2012 - Designing complex applications using html5 and knock...
 
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
[Serverless Meetup Tokyo #3] Serverless in Azure (Azure Functionsのアップデート、事例、デ...
 
Mobile services on windows azure (part2)
Mobile services on windows azure (part2)Mobile services on windows azure (part2)
Mobile services on windows azure (part2)
 

Recently uploaded

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantAxelRicardoTrocheRiq
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...ICS
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyFrank van der Linden
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackVICTOR MAESTRE RAMIREZ
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 

Recently uploaded (20)

Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Salesforce Certified Field Service Consultant
Salesforce Certified Field Service ConsultantSalesforce Certified Field Service Consultant
Salesforce Certified Field Service Consultant
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Naraina Delhi 💯Call Us 🔝8264348440🔝
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
The Real-World Challenges of Medical Device Cybersecurity- Mitigating Vulnera...
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
Engage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The UglyEngage Usergroup 2024 - The Good The Bad_The Ugly
Engage Usergroup 2024 - The Good The Bad_The Ugly
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Cloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStackCloud Management Software Platforms: OpenStack
Cloud Management Software Platforms: OpenStack
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 

Medium TechTalk — iOS