SlideShare a Scribd company logo
1 of 14
Download to read offline
10X Product Development
Lessons Learned and Detailed Architectures from Building Two Serverless Applications
@joeemison
May 2016
Joe Emison @joeemison
ASSERTIONS
Product-market fit is paramount.
10X software developers do not exist.
10X product development does.
2
Joe Emison @joeemison
ASSERTIONS
• Spend development time on business-specific code
• Don’t make things people won’t use
• Don’t build things you can buy (rent)
• Stop regressions
• Maximize iterations with customers
• Big changes
• Frequent deploys
• Minimize dependences
• Don’t make developers wait (IT Ops, DBAs, Other Devs)
• Don’t make developers stop (incomplete specifications)
3
10X Product Development
Pick your development processes, staffing, and stack based on the above
Joe Emison @joeemison
COMMERCIAL SEARCH
• Zillow/Trulia/Realtor.com for Commercial Real Estate
• Demo: Search, Details, Find Broker, Login, Add Listing
4
https://www.commercialsearch.com/
Joe Emison @joeemison
COMMERCIAL SEARCH
5
https://www.commercialsearch.com/
Netlify
- HTML
- CSS
- JS
Prerender.io
User Browser
Algolia
- Full Text Search
- Facet Search
- Geo Search
Auth Firebase
ETL / Queue Servers
Joe Emison @joeemison
COMMERCIAL SEARCH
• Launched in 4 months with 2 developers
• 13,307 lines of TypeScript
• 95%+ Developer Efficiency (developers deliver at estimates, few regressions)
• Conceptually: Microservices architecture, but we only wrote the core
• If we were using ElasticSearch, we’d need a proxy middle tier between Angular and ES
• If we used a more traditional way of handling images (e.g., RoR with image-handling
libraries), we’d have another language and servers to support for availability (and have to
update for security)
• If we hosted our static assets on our own web server, we’d have those servers to support
for availability (and have to update for security)
6
https://www.commercialsearch.com/
Joe Emison @joeemison
LESSONS LEARNED / PAIN POINTS
• The Firebase dashboard has some limits with larger datasets (but API works fine)
• Developer learning curve from RDBMS to Firebase is non-trivial, but not insane
• Cloudinary configurations are non-obvious; need to use their (very good) support
• Algolia needs new dependent indices for each sort criteria/direction
7
Joe Emison @joeemison
PROPERTY TOUR PRO
• Tour Book (PDF, mobile web) generator for commercial
real estate brokers
• Demo: Login with LinkedIn, Add Property, View Amenities,
Crop Image, Export PDF
8
https://www.propertytourpro.com/
Joe Emison @joeemison
PROPERTY TOUR PRO
9
https://www.propertytourpro.com/
DocRaptor
(PDF Generation)
User
Brower
Firebase
Auth0
Firebase Hosting
- HTML
- CSS
- JS
Auth0 Webtask
(simple secure JS code runner)
Joe Emison @joeemison
LESSONS LEARNED / PAIN POINTS
• Don’t use AngularFire – triple-binding just gets too slow
• CORS (and private API keys) means that you can’t hit third-party APIs
directly; use Webtask
• Auth0 is great, but documentation is frustrating
• DocRaptor doesn’t compress PDFs/images well, so you have to do that
through Cloudinary
10
Joe Emison @joeemison
WHY NOT AWS?
• AWS Serverless is about back-end processing, which we have largely outsourced
• AWS Serverless is complicated: IAM + Cognito + API Gateway + Lambda
• Compare: Auth0 Webtask to Lambda + API Gateway + IAM + Cognito
• Compare: Firebase to Lambda + API Gateway + IAM + Cognito + DynamoDB
• Compare: Firebase Queues to Lambda + API Gateway + IAM + Cognito + SQS
• Serverless Framework, so many support libraries for Lambda are examples of
what’s missing in the product
11
Joe Emison @joeemison
SECURITY
12
• Netlify
– Read-only assets (code for client)
• Algolia
– Read-only based on API key shared with client
that has strict rate limits by session + IP
– Authenticated users could each have own API
key (but not implemented yet)
• Cloudinary
– Images uploaded into moderated queue
(WebPurify human-driven moderation)
– Retrieval of images forced through watermarking
transformation
• Firebase
– Advanced security rules evaluated as JavaScript
expressions; uses Firebase Auth
– Each listing has a set of users that can edit it
– User prefs only read / write by individual users
– Rate limits on retrieval
Joe Emison @joeemison
SECURITY
13
Joe Emison @joeemison
READ MORE / CONTACT ME
InformationWeek: http://j.mp/emisonIW
Network Computing: http://j.mp/emisonNC
The New Stack: http://j.mp/emisonTNS
14
@joeemison

More Related Content

Similar to Joe Emison - 10X Product Development

Alfresco iOS Mobile Application In Depth Details and Design
Alfresco iOS Mobile Application In Depth Details and DesignAlfresco iOS Mobile Application In Depth Details and Design
Alfresco iOS Mobile Application In Depth Details and Design
Alfresco Software
 
Alfresco mobile webinar 11 1-11
Alfresco mobile webinar 11 1-11Alfresco mobile webinar 11 1-11
Alfresco mobile webinar 11 1-11
Zia Consulting
 
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
Amazon Web Services Korea
 
"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect Workshop"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect Workshop
Patrick Chanezon
 
Building rich interface components with SharePoint
Building rich interface components with SharePointBuilding rich interface components with SharePoint
Building rich interface components with SharePoint
Louis-Philippe Lavoie
 

Similar to Joe Emison - 10X Product Development (20)

Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar SeriesGetting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
Getting Started With Continuous Delivery on AWS - AWS April 2016 Webinar Series
 
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
INF104 - HCL Domino AppDev Pack – The Future of Domino App Dev Nobody Knows A...
 
The new Azure App Service Architecture
The new Azure App Service ArchitectureThe new Azure App Service Architecture
The new Azure App Service Architecture
 
AD101: IBM Domino Application Development Futures
AD101: IBM Domino Application Development FuturesAD101: IBM Domino Application Development Futures
AD101: IBM Domino Application Development Futures
 
Custom Development in SharePoint – What are my options now?
Custom Development in SharePoint – What are my options now?Custom Development in SharePoint – What are my options now?
Custom Development in SharePoint – What are my options now?
 
Alfresco iOS Mobile Application In Depth Details and Design
Alfresco iOS Mobile Application In Depth Details and DesignAlfresco iOS Mobile Application In Depth Details and Design
Alfresco iOS Mobile Application In Depth Details and Design
 
DevOps and Cloud at NI
DevOps and Cloud at NIDevOps and Cloud at NI
DevOps and Cloud at NI
 
Big ideas in small packages - How microservices helped us to scale our vision
Big ideas in small packages  - How microservices helped us to scale our visionBig ideas in small packages  - How microservices helped us to scale our vision
Big ideas in small packages - How microservices helped us to scale our vision
 
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
Integrate Applications into IBM Connections Cloud and On Premises (AD 1632)
 
Alfresco mobile webinar 11 1-11
Alfresco mobile webinar 11 1-11Alfresco mobile webinar 11 1-11
Alfresco mobile webinar 11 1-11
 
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in DominoDEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
DEV117 - Unleash the Power of the AppDev Pack and Node.js in Domino
 
INTERFACE, by apidays - Lessons learned from implementing our custom ‘Big Da...
INTERFACE, by apidays  - Lessons learned from implementing our custom ‘Big Da...INTERFACE, by apidays  - Lessons learned from implementing our custom ‘Big Da...
INTERFACE, by apidays - Lessons learned from implementing our custom ‘Big Da...
 
Simple Cloud with Amazon Lightsail
Simple Cloud with Amazon LightsailSimple Cloud with Amazon Lightsail
Simple Cloud with Amazon Lightsail
 
Realm 研究
Realm 研究Realm 研究
Realm 研究
 
Surrogate dependencies (in node js) v1.0
Surrogate dependencies  (in node js)  v1.0Surrogate dependencies  (in node js)  v1.0
Surrogate dependencies (in node js) v1.0
 
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
스타트업과 개발자를 위한 AWS 클라우드 태권 세미나
 
"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect Workshop"Portrait of the developer as The Artist" Lockheed Architect Workshop
"Portrait of the developer as The Artist" Lockheed Architect Workshop
 
Why BaaS is crucial to early stage startups
Why BaaS is crucial to early stage startupsWhy BaaS is crucial to early stage startups
Why BaaS is crucial to early stage startups
 
Building rich interface components with SharePoint
Building rich interface components with SharePointBuilding rich interface components with SharePoint
Building rich interface components with SharePoint
 
Application Lifecycle Management
Application Lifecycle ManagementApplication Lifecycle Management
Application Lifecycle Management
 

More from ServerlessConf

Patrick Debois - From Serverless to Servicefull
Patrick Debois - From Serverless to ServicefullPatrick Debois - From Serverless to Servicefull
Patrick Debois - From Serverless to Servicefull
ServerlessConf
 
Frederic Lavigne and Stephen Fink - Serverless Video Processing with IBM Blue...
Frederic Lavigne and Stephen Fink - Serverless Video Processing with IBM Blue...Frederic Lavigne and Stephen Fink - Serverless Video Processing with IBM Blue...
Frederic Lavigne and Stephen Fink - Serverless Video Processing with IBM Blue...
ServerlessConf
 
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
ServerlessConf
 

More from ServerlessConf (16)

Paul Johnston - What I Wish I'd Known Last Year
Paul Johnston - What I Wish I'd Known Last YearPaul Johnston - What I Wish I'd Known Last Year
Paul Johnston - What I Wish I'd Known Last Year
 
Tomasz Janczuk - Webtaskalifragilistexpialidocious
Tomasz Janczuk - WebtaskalifragilistexpialidociousTomasz Janczuk - Webtaskalifragilistexpialidocious
Tomasz Janczuk - Webtaskalifragilistexpialidocious
 
Charity Hound - Serverless, NoOps, The Tooth Fairy
Charity Hound - Serverless, NoOps, The Tooth FairyCharity Hound - Serverless, NoOps, The Tooth Fairy
Charity Hound - Serverless, NoOps, The Tooth Fairy
 
Ryan Brown - Open Community
Ryan Brown - Open CommunityRyan Brown - Open Community
Ryan Brown - Open Community
 
Rob Gruhl and Erik Erikson - What We Learned in 18 Serverless Months at Nords...
Rob Gruhl and Erik Erikson - What We Learned in 18 Serverless Months at Nords...Rob Gruhl and Erik Erikson - What We Learned in 18 Serverless Months at Nords...
Rob Gruhl and Erik Erikson - What We Learned in 18 Serverless Months at Nords...
 
Paul Johnston - What I Wish I'd Known Last Year
Paul Johnston - What I Wish I'd Known Last YearPaul Johnston - What I Wish I'd Known Last Year
Paul Johnston - What I Wish I'd Known Last Year
 
Patrick Debois - From Serverless to Servicefull
Patrick Debois - From Serverless to ServicefullPatrick Debois - From Serverless to Servicefull
Patrick Debois - From Serverless to Servicefull
 
Noelle La Charite - Building Voice Experiences
Noelle La Charite - Building Voice ExperiencesNoelle La Charite - Building Voice Experiences
Noelle La Charite - Building Voice Experiences
 
Lars Trierloff - Serverless Adventures with AWS Lambda and Clojure
Lars Trierloff - Serverless Adventures with AWS Lambda and ClojureLars Trierloff - Serverless Adventures with AWS Lambda and Clojure
Lars Trierloff - Serverless Adventures with AWS Lambda and Clojure
 
Kapil Thangavelu - Cloud Custodian
Kapil Thangavelu - Cloud CustodianKapil Thangavelu - Cloud Custodian
Kapil Thangavelu - Cloud Custodian
 
Frederic Lavigne and Stephen Fink - Serverless Video Processing with IBM Blue...
Frederic Lavigne and Stephen Fink - Serverless Video Processing with IBM Blue...Frederic Lavigne and Stephen Fink - Serverless Video Processing with IBM Blue...
Frederic Lavigne and Stephen Fink - Serverless Video Processing with IBM Blue...
 
Eric Windisch - Building Composable Serverless Apps
Eric Windisch - Building Composable Serverless AppsEric Windisch - Building Composable Serverless Apps
Eric Windisch - Building Composable Serverless Apps
 
Donald Ferguson - Old Programmers Can Learn New Tricks
Donald Ferguson - Old Programmers Can Learn New TricksDonald Ferguson - Old Programmers Can Learn New Tricks
Donald Ferguson - Old Programmers Can Learn New Tricks
 
Chris Anderson and Yochay Kiriaty - Serverless Patterns with Azure Functions
Chris Anderson and Yochay Kiriaty - Serverless Patterns with Azure FunctionsChris Anderson and Yochay Kiriaty - Serverless Patterns with Azure Functions
Chris Anderson and Yochay Kiriaty - Serverless Patterns with Azure Functions
 
Ben Kehoe - Serverless Architecture for the Internet of Things
Ben Kehoe - Serverless Architecture for the Internet of ThingsBen Kehoe - Serverless Architecture for the Internet of Things
Ben Kehoe - Serverless Architecture for the Internet of Things
 
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
Andreas Nauerz and Michael Behrendt - Event Driven and Serverless Programming...
 

Recently uploaded

Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Chandigarh Call girls 9053900678 Call girls in Chandigarh
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
Diya Sharma
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
soniya singh
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
Call Girls In Delhi Whatsup 9873940964 Enjoy Unlimited Pleasure
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
@Chandigarh #call #Girls 9053900678 @Call #Girls in @Punjab 9053900678
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
imonikaupta
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
soniya singh
 

Recently uploaded (20)

Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
Low Sexy Call Girls In Mohali 9053900678 🥵Have Save And Good Place 🥵
 
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
DDoS In Oceania and the Pacific, presented by Dave Phelan at NZNOG 2024
 
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort ServiceCall Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
Call Girls in Prashant Vihar, Delhi 💯 Call Us 🔝9953056974 🔝 Escort Service
 
Real Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirtReal Men Wear Diapers T Shirts sweatshirt
Real Men Wear Diapers T Shirts sweatshirt
 
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
Hire↠Young Call Girls in Tilak nagar (Delhi) ☎️ 9205541914 ☎️ Independent Esc...
 
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night StandHot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
Hot Call Girls |Delhi |Hauz Khas ☎ 9711199171 Book Your One night Stand
 
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
₹5.5k {Cash Payment}New Friends Colony Call Girls In [Delhi NIHARIKA] 🔝|97111...
 
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
VVVIP Call Girls In Connaught Place ➡️ Delhi ➡️ 9999965857 🚀 No Advance 24HRS...
 
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
Call Now ☎ 8264348440 !! Call Girls in Shahpur Jat Escort Service Delhi N.C.R.
 
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Pratap Nagar Delhi 💯Call Us 🔝8264348440🔝
 
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
valsad Escorts Service ☎️ 6378878445 ( Sakshi Sinha ) High Profile Call Girls...
 
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
WhatsApp 📞 8448380779 ✅Call Girls In Mamura Sector 66 ( Noida)
 
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
𓀤Call On 7877925207 𓀤 Ahmedguda Call Girls Hot Model With Sexy Bhabi Ready Fo...
 
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
6.High Profile Call Girls In Punjab +919053900678 Punjab Call GirlHigh Profil...
 
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...Top Rated  Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
Top Rated Pune Call Girls Daund ⟟ 6297143586 ⟟ Call Me For Genuine Sex Servi...
 
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...Pune Airport ( Call Girls ) Pune  6297143586  Hot Model With Sexy Bhabi Ready...
Pune Airport ( Call Girls ) Pune 6297143586 Hot Model With Sexy Bhabi Ready...
 
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRLLucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
Lucknow ❤CALL GIRL 88759*99948 ❤CALL GIRLS IN Lucknow ESCORT SERVICE❤CALL GIRL
 
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
Call Girls In Sukhdev Vihar Delhi 💯Call Us 🔝8264348440🔝
 
Trump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts SweatshirtTrump Diapers Over Dems t shirts Sweatshirt
Trump Diapers Over Dems t shirts Sweatshirt
 
Al Barsha Night Partner +0567686026 Call Girls Dubai
Al Barsha Night Partner +0567686026 Call Girls  DubaiAl Barsha Night Partner +0567686026 Call Girls  Dubai
Al Barsha Night Partner +0567686026 Call Girls Dubai
 

Joe Emison - 10X Product Development

  • 1. 10X Product Development Lessons Learned and Detailed Architectures from Building Two Serverless Applications @joeemison May 2016
  • 2. Joe Emison @joeemison ASSERTIONS Product-market fit is paramount. 10X software developers do not exist. 10X product development does. 2
  • 3. Joe Emison @joeemison ASSERTIONS • Spend development time on business-specific code • Don’t make things people won’t use • Don’t build things you can buy (rent) • Stop regressions • Maximize iterations with customers • Big changes • Frequent deploys • Minimize dependences • Don’t make developers wait (IT Ops, DBAs, Other Devs) • Don’t make developers stop (incomplete specifications) 3 10X Product Development Pick your development processes, staffing, and stack based on the above
  • 4. Joe Emison @joeemison COMMERCIAL SEARCH • Zillow/Trulia/Realtor.com for Commercial Real Estate • Demo: Search, Details, Find Broker, Login, Add Listing 4 https://www.commercialsearch.com/
  • 5. Joe Emison @joeemison COMMERCIAL SEARCH 5 https://www.commercialsearch.com/ Netlify - HTML - CSS - JS Prerender.io User Browser Algolia - Full Text Search - Facet Search - Geo Search Auth Firebase ETL / Queue Servers
  • 6. Joe Emison @joeemison COMMERCIAL SEARCH • Launched in 4 months with 2 developers • 13,307 lines of TypeScript • 95%+ Developer Efficiency (developers deliver at estimates, few regressions) • Conceptually: Microservices architecture, but we only wrote the core • If we were using ElasticSearch, we’d need a proxy middle tier between Angular and ES • If we used a more traditional way of handling images (e.g., RoR with image-handling libraries), we’d have another language and servers to support for availability (and have to update for security) • If we hosted our static assets on our own web server, we’d have those servers to support for availability (and have to update for security) 6 https://www.commercialsearch.com/
  • 7. Joe Emison @joeemison LESSONS LEARNED / PAIN POINTS • The Firebase dashboard has some limits with larger datasets (but API works fine) • Developer learning curve from RDBMS to Firebase is non-trivial, but not insane • Cloudinary configurations are non-obvious; need to use their (very good) support • Algolia needs new dependent indices for each sort criteria/direction 7
  • 8. Joe Emison @joeemison PROPERTY TOUR PRO • Tour Book (PDF, mobile web) generator for commercial real estate brokers • Demo: Login with LinkedIn, Add Property, View Amenities, Crop Image, Export PDF 8 https://www.propertytourpro.com/
  • 9. Joe Emison @joeemison PROPERTY TOUR PRO 9 https://www.propertytourpro.com/ DocRaptor (PDF Generation) User Brower Firebase Auth0 Firebase Hosting - HTML - CSS - JS Auth0 Webtask (simple secure JS code runner)
  • 10. Joe Emison @joeemison LESSONS LEARNED / PAIN POINTS • Don’t use AngularFire – triple-binding just gets too slow • CORS (and private API keys) means that you can’t hit third-party APIs directly; use Webtask • Auth0 is great, but documentation is frustrating • DocRaptor doesn’t compress PDFs/images well, so you have to do that through Cloudinary 10
  • 11. Joe Emison @joeemison WHY NOT AWS? • AWS Serverless is about back-end processing, which we have largely outsourced • AWS Serverless is complicated: IAM + Cognito + API Gateway + Lambda • Compare: Auth0 Webtask to Lambda + API Gateway + IAM + Cognito • Compare: Firebase to Lambda + API Gateway + IAM + Cognito + DynamoDB • Compare: Firebase Queues to Lambda + API Gateway + IAM + Cognito + SQS • Serverless Framework, so many support libraries for Lambda are examples of what’s missing in the product 11
  • 12. Joe Emison @joeemison SECURITY 12 • Netlify – Read-only assets (code for client) • Algolia – Read-only based on API key shared with client that has strict rate limits by session + IP – Authenticated users could each have own API key (but not implemented yet) • Cloudinary – Images uploaded into moderated queue (WebPurify human-driven moderation) – Retrieval of images forced through watermarking transformation • Firebase – Advanced security rules evaluated as JavaScript expressions; uses Firebase Auth – Each listing has a set of users that can edit it – User prefs only read / write by individual users – Rate limits on retrieval
  • 14. Joe Emison @joeemison READ MORE / CONTACT ME InformationWeek: http://j.mp/emisonIW Network Computing: http://j.mp/emisonNC The New Stack: http://j.mp/emisonTNS 14 @joeemison