better content presentation
TRANSCRIPT
BetterContent
for a developer’s well being
Benny Weingarten-Gabbay
@gardenofwine
Once upon a time,
there was an app
Home Screen
Title:“RECENT ACTIVITY”
One day, the PM said,
“Lets change the title”
Home Screen
Title:“ALL YOUR RECENT ITEMS”
Inefficiency
Developer
Product ManagerMarketing Manager
Legal Advisor
UX specialist Designer
Better Efficiency
Developer
Product ManagerMarketing Manager
Legal Advisor
UX specialist Designer
Side note: Content Management
Desirable features:
● Central document for all content
● Easy localization
● Change app content on the fly
Reality:
● Not easy
● Mostly obtrusive
● Incomplete
Side note: Content Management
Spark Inspector
Optimizely
Enter: BetterContent
Buy
now!
Buy
now!Immediately,
at runtime
Requirements
● Publicly accessible
● Easy development
● Easy installation
● Easy configuration
Enter: BetterContent
Buy
now!
Buy
now!
Enter: BetterContent
Buy
now!
Buy
now!
Free Hosting Services
heroku labs:enable websockets
Native packaging
VS
Websocket Implementation
VS
Tool Architecture
Buy
now!
Buy
or
rent!
Native app
Server
web client
Native Architecture
● Hook for app start
● A repeating NSTimer scanner
Native Architecture
NSDictionary
“0x7cea4590”
“0x7a0b9cf0”
“0x79e7bd70”
“0x79ea0d90”
Native Architecture@implementation UILabel (BTCLabel)
- (void)btcIsSerializable{}
- (NSString *)btcClass{
return @"label";
}
- (NSDictionary *)btcAttributes{
return @{@"text": self.btcSafeText,
@"font" : @{@"pointSize" : @(self.font.pointSize)
@"color" : [self btcHexColor]}};
}
- (void)updateWithComponent:(BTCComponent *)newComponent{
self.text = [newComponent.attributes objectForKey:@"text"];
}
Server Architecture
● Node.js, gulp
● based on heroku-examples/node-ws-test
● Simple, fragile websocket protocol
● Mostly a data pipe between Native App
and web app.
Web Client Architecture
● Still work in progress
● One big js file
● Separate component for each native class
● Currently only supports label editing
The Future
● Heroku templates
● iOS Framework in addition to pod
● Android support
● Additional components support
● Additional attributes support
● Multiple user support
● Native API for app control over
functionality
The Holy Grail
Automatic content management
support
1. Use BetterContent to scrape content
2. Build a document with all apps content
3. Native app uses said document for content
4. Said document is editable from the server
BetterContent
https://github.com/gardenofwine/better-content-
server
Benny Weingarten-Gabbay
@gardenofwine