SlideShare a Scribd company logo
1 of 79
Download to read offline
Step 1: Build your own tools.
Step 3: take over world
Electron - Webpack - React - Firebase
What this talk is about
A problem I had and a solution I made
Some learnings from the solution
A smattering of implementation details
WARNING:
THERE WILL BE CODE
Who am I?
Canadian (from Toronto)
ex-Googler (6yrs - swe, devrel)
Head of DevRel at Credit Karma
LinkedIn: https://goo.gl/CQDEr2
Twitter: @_krispy_
@Google I had tools to help me:
go/teams = quick company directory
cs/ = quick code search
go/easyokr = OKR tool
go/tldr = quick company news
...lots more
Missing Tools of the trade
@Credit Karma the tools ...umm
Workday = org chart (sort of…)
News = emails / slack
Stash = code search (now in github)
OKRs = ?? patch work ??
I saw a lot of potential to improve
The problem
How am I
supposed to
find the
people I
need?
A solution
Find a way to make what I need
Aura
Aura - The initial plan
Create a tool that uses existing data to
help me find the people, projects and
company information I need.
SEARCH
Refinements
Refinements
Refinements
First Name Last Name - Other
First Name Last Name - Other
First Name Last Name - Other
Pagination
Pagination
First Name Last Name - Other
First Name Last Name - Other
First Name Last Name - Other
Name
Email
Location
%
Managers
NameName Name
Peers
NameName Name
Reports
NameName Name
Projects/Skills/Bios
NameName Name
Badges
Awards
Etc.
Edit
Other Organizational Visualizations
DEMO TIME
Modern web tools
Step 1: Build stuff
Top 23 Best Frameworks…?? WAT?
✖ MobX
✖ Omniscient
✖ Ractive.js
✖ Mercury
✖ WebRx
✖ Deku
✖ Riot.js
✖ Mithril
✖ Vue.js
✖ MVC JavaScript Frameworks
✖ Angular.js
✖ jQuery
✖ React
✖ Socket
✖ Polymer
✖ Node.js
✖ Meteor
✖ D3.js
✖ Ember
✖ Aurelia
✖ Knockout
✖ Keystone
✖ Backbone
✖ Stapes
I started to read up on things...
https://goo.gl/bdhB7P
How it feels to learn JavaScript in 2016
Jose Aguinaga
Node.js, React, Electron, Material UI, Firebase,....
Electron
Electron
Electron + React = Simple Serverless Single Browser
AURA
Pros & Cons
Pros:
- Single Browser
- Small Surface Area
- Multiple Versions
- OS Context Menu
- OS Function Access
Cons:
- OAuth2
- Unsigned (sec.)
- Pushing updates
Workday JSON
AURA
Data Proc Function
DB Trigger Function
Firebase Auth
Request
Response
Cron Trigger
Developer Setup
Tools:
Install iTerm2 and ZSH + customize
Install GitKraken
Install Visual Studio Code
Install NodeJS (v7.7+)
Install Yarn
Install Electron globally
These are actually Electron Apps!!
GitKraken Visual Studio Code
My iTerm2 Setup
I use zsh
- https://goo.gl/GeVQr6
- A lot of plugins
- Using the cobalt2 theme
Pro Tip
- Best way to make iterm2 use zsh
Installing Electron & Firebase CLI + other things
$> npm install -g electron
$> npm install -g firebase-tools
$> npm install -g firebase-bolt
$> npm install -g create-react-app
Developer Setup
Services:
Create a Firebase project (add billing)
Create an Algolia account (free tier)
Create a github repo for my project
Firebase Setup
Creating a Firebase Project
Get your keys and IDs
Algolia.com
Algolia React Components
Developer Setup
Electron-react-boilerplate
I created my own (simpler and works)
Get it here: https://goo.gl/7RX5pf
Ok, so where are we...
We setup the tools and created service
accounts. We cloned the simple electron
boilerplate (and changed the origin to
our new git repo). We have a project
directory with a few files.
Electron code
Web app code
main.js
Points to our
webpack’d react
app
Don’t forget to
specify the files to
bundle with
electron
Electron
package.json
React app
package.json
Side note: by the time I had a build
that I would classify as an Alpha release the
number of dependencies had grown quite a
bit.
The stand out dependencies:
- material-ui
- axios
- redux
- webpack
- firebase
Oops… how do we fix this?
Oh ya, we need to build our react app first…
Looks like
something is
wrong...
Set it on fire
$> firebase login
(follow instructions)
$> firebase init
(do this from the project root - not the react-app)
- Choose all options
- Pick your project to attach to
- Keep the defaults
Firebase Database
Firebase Database
Firebase Database
Firebase Database Rules & Structure
database.rules.bolt
Firebase Database - Rules with Bolt
Bolt helps you describe your rules.
$> firebase-bolt database.rules.bolt
Produces database.rules.json
Gets pushed when you firebase deploy
We should talk about REDUX now...
Application Store
Reducer A Reducer B Reducer X
Provider
Component
Action
connected
properties
Enter Redux
How about some webpack
$> yarn add babel-loader --dev
$> yarn add babel-core --dev
$> yarn add babel-preset-es2016 --dev
$> yarn add babel-preset-react --dev
$> yarn add babel-preset-stage-0 --dev
$> yarn add thunk redux-thunk
webpack.config.js
.babelrc
Connections
index.js
App.js
reducers/
firebase.js
actions/
Firebase
Actions.js
common/
Firebase
Config.js
provider/store
dispatch
Connections
index.js
App.js
reducers/
firebase.js
actions/
Firebase
Actions.js
common/
Firebase
Config.js
provider/store
dispatch
Enter Redux
src/reducers/firebase.js
src/reducers/index.js
Connections
index.js
App.js
reducers/
firebase.js
actions/
Firebase
Actions.js
common/
Firebase
Config.js
provider/store
dispatch
Enter Redux & Firebase
src/common/FirebaseConfig.js
src/actions/FirebaseActions.js
Connections
index.js
App.js
reducers/
firebase.js
actions/
Firebase
Actions.js
common/
Firebase
Config.js
provider/store
dispatch
Enter Redux & Firebase
src/index.js
src/component/App.js
Our Data
Project State
Note:
I removed the
node_modules
directory before
taking this
screenshot. You
should have a
node_modules dir.
Ok - time for UI Components
material-ui.com
$> yarn add material-ui@next material-ui-icons
An App Bar
Firebase Cloud Functions
Example Meetup REST api using axios.
Configure Functions environment variables
Use environment variables
Deploy
Trigger Function
Data Has Been saved
Make a ref trigger function
Curl the trigger again
If we modify our component
Get the code I have shown you here
https://goo.gl/Gb61q9
Stuff I have yet to figure out
How to properly unit test
How to perform integration testing
Electron OAuth2
Future material:
OAuth2 within Electron
- beware the window management
Whats next?
Finish features
Write a guide book? Open Source code?
Credit Karma Eng Blog
https://goo.gl/mF9PqM
Jobs @ Credit Karma
https://goo.gl/h1qn8a
LinkedIn: https://goo.gl/CQDEr2
Twitter: @_krispy_

More Related Content

What's hot

Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceBrowser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
Nicholas Zakas
 

What's hot (20)

Hosting Your Own OTA Update Service
Hosting Your Own OTA Update ServiceHosting Your Own OTA Update Service
Hosting Your Own OTA Update Service
 
Mastering Grunt
Mastering GruntMastering Grunt
Mastering Grunt
 
Enough with the JavaScript already!
Enough with the JavaScript already!Enough with the JavaScript already!
Enough with the JavaScript already!
 
PWA 應用 - 實現網站離線瀏覽
PWA 應用 - 實現網站離線瀏覽PWA 應用 - 實現網站離線瀏覽
PWA 應用 - 實現網站離線瀏覽
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - Angular Summit 2015
 
Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021Java REST API Framework Comparison - PWX 2021
Java REST API Framework Comparison - PWX 2021
 
DevOps tools for everyone - Vagrant, Puppet and Webmin
DevOps tools for everyone - Vagrant, Puppet and WebminDevOps tools for everyone - Vagrant, Puppet and Webmin
DevOps tools for everyone - Vagrant, Puppet and Webmin
 
Automating WordPress Theme Development
Automating WordPress Theme DevelopmentAutomating WordPress Theme Development
Automating WordPress Theme Development
 
Get Ahead with HTML5 on Moible
Get Ahead with HTML5 on MoibleGet Ahead with HTML5 on Moible
Get Ahead with HTML5 on Moible
 
Forensic Tools for In-Depth Performance Investigations
Forensic Tools for In-Depth Performance InvestigationsForensic Tools for In-Depth Performance Investigations
Forensic Tools for In-Depth Performance Investigations
 
Google apps script introduction
Google apps script introductionGoogle apps script introduction
Google apps script introduction
 
High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010High Performance JavaScript - jQuery Conference SF Bay Area 2010
High Performance JavaScript - jQuery Conference SF Bay Area 2010
 
Get Hip with JHipster - Denver JUG 2015
Get Hip with JHipster - Denver JUG 2015Get Hip with JHipster - Denver JUG 2015
Get Hip with JHipster - Denver JUG 2015
 
Browser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom MenaceBrowser Wars Episode 1: The Phantom Menace
Browser Wars Episode 1: The Phantom Menace
 
Building performance into the new yahoo homepage presentation
Building performance into the new yahoo  homepage presentationBuilding performance into the new yahoo  homepage presentation
Building performance into the new yahoo homepage presentation
 
Using Modern Browser APIs to Improve the Performance of Your Web Applications
Using Modern Browser APIs to Improve the Performance of Your Web ApplicationsUsing Modern Browser APIs to Improve the Performance of Your Web Applications
Using Modern Browser APIs to Improve the Performance of Your Web Applications
 
Service Workers for Performance
Service Workers for PerformanceService Workers for Performance
Service Workers for Performance
 
Economies of Scaling Software
Economies of Scaling SoftwareEconomies of Scaling Software
Economies of Scaling Software
 
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
Comparing Hot JavaScript Frameworks: AngularJS, Ember.js and React.js - Sprin...
 
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
Get Hip with JHipster: Spring Boot + AngularJS + Bootstrap - GeekOut 2016
 

Similar to Aura LA GDG - July 17-2017

Similar to Aura LA GDG - July 17-2017 (20)

Vue and Firebase Experiences
Vue and Firebase ExperiencesVue and Firebase Experiences
Vue and Firebase Experiences
 
MongoDB World 2019: In-App Bug Reporting
MongoDB World 2019: In-App Bug ReportingMongoDB World 2019: In-App Bug Reporting
MongoDB World 2019: In-App Bug Reporting
 
Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014Modern Web Application Development Workflow - EclipseCon France 2014
Modern Web Application Development Workflow - EclipseCon France 2014
 
Firebasics
FirebasicsFirebasics
Firebasics
 
Performance #5 cpu and battery
Performance #5  cpu and batteryPerformance #5  cpu and battery
Performance #5 cpu and battery
 
Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014Modern Web Application Development Workflow - EclipseCon Europe 2014
Modern Web Application Development Workflow - EclipseCon Europe 2014
 
Deploying Web Apps with PaaS and Docker Tools
Deploying Web Apps with PaaS and Docker ToolsDeploying Web Apps with PaaS and Docker Tools
Deploying Web Apps with PaaS and Docker Tools
 
Build a chatroom!
Build a chatroom!Build a chatroom!
Build a chatroom!
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
 
Intro to Github Actions @likecoin
Intro to Github Actions @likecoinIntro to Github Actions @likecoin
Intro to Github Actions @likecoin
 
Locarise,reagent and JavaScript Libraries
Locarise,reagent and JavaScript LibrariesLocarise,reagent and JavaScript Libraries
Locarise,reagent and JavaScript Libraries
 
Iac d.damyanov 4.pptx
Iac d.damyanov 4.pptxIac d.damyanov 4.pptx
Iac d.damyanov 4.pptx
 
Android gradle-build-system-overview
Android gradle-build-system-overviewAndroid gradle-build-system-overview
Android gradle-build-system-overview
 
The Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session IThe Secrets of The FullStack Ninja - Part A - Session I
The Secrets of The FullStack Ninja - Part A - Session I
 
Mobile development in 2020
Mobile development in 2020 Mobile development in 2020
Mobile development in 2020
 
HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19HAXTheWeb @ Apereo 19
HAXTheWeb @ Apereo 19
 
Обход проверки безопасности в магазинах мобильных приложений при помощи платф...
Обход проверки безопасности в магазинах мобильных приложений при помощи платф...Обход проверки безопасности в магазинах мобильных приложений при помощи платф...
Обход проверки безопасности в магазинах мобильных приложений при помощи платф...
 
Nativescript with angular 2
Nativescript with angular 2Nativescript with angular 2
Nativescript with angular 2
 
NodeJS @ ACS
NodeJS @ ACSNodeJS @ ACS
NodeJS @ ACS
 
Gitlab and Lingvokot
Gitlab and LingvokotGitlab and Lingvokot
Gitlab and Lingvokot
 

Recently uploaded

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 

Recently uploaded (20)

Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu SubbuApidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
Apidays Singapore 2024 - Modernizing Securities Finance by Madhu Subbu
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot ModelNavi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Navi Mumbai Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 

Aura LA GDG - July 17-2017