Better Content Presentation

26
BetterContent for a developer’s well being Benny Weingarten-Gabbay @gardenofwine

Transcript of Better Content Presentation

BetterContent

for a developer’s well being

Benny Weingarten-Gabbay @gardenofwine

Once upon a time,there was an app

Home ScreenTitle:

“RECENT ACTIVITY”

One day, the PM said,“Lets change the title”

Home ScreenTitle:

“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!

1. Serialized NSDictionary

2. Modification JSON

Native app

Server

web client

Native Architecture

● Hook for app start● A repeating NSTimer scanner

Native Architecture

NSDictionary

“0x7cea4590”

“0x7a0b9cf0”

“0x79e7bd70”

“0x79ea0d90”

weak references

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 content2. Build a document with all apps content3. Native app uses said document for content4. Said document is editable from the server

BetterContent

https://github.com/gardenofwine/better-content-server

Benny Weingarten-Gabbay @gardenofwine