SlideShare a Scribd company logo
1 of 26
B E C O M I N G
A
G R E E N
D E V E L O P E
R
J E N L O O P E R
C L O U D D E V E L O P E R
A D V O C A T E
M I C R O S O F T
A G E N D A
- L E A R N A B O U T
S U S T A I N A B L E S O F T W A R E
D E V E L O P M E N T
- C O D E T O G E T H E R !
What is
sustainable
software
development?
An emerging discipline at the intersection of:
🌱 climate science
💻 software practices and architecture
💡electricity markets
🔌 hardware and data center design
https://principles.green/
Goals
By following certain
recommendations, a Sustainable
Software Engineer
can make decisions
that have a meaningful impact
on the carbon impact of their
applications.
Let’s look at these 8
recommendations
8 principles
1. BUILD
APPLICATIONS THAT
ARE CARBON
EFFICIENT
2. BUILD
APPLICATIONS THAT
ARE ENERGY
EFFICIENT
3. CONSUME
ELECTRICITY WITH
THE LOWEST
CARBON INTENSITY
4. BUILD
APPLICATIONS THAT
RUN ON OLDER
HARDWARE
5. RUN SERVERS AT
A HIGH RATE OF
UTILIZATION
6. REDUCE THE
AMOUNT OF DATA
AND THE DISTANCE
IT MUST TRAVEL
ACROSS THE
NETWORK
7. INSTEAD OF
SHAPING SUPPLY TO
MEET DEMAND, TRY
SHAPING DEMAND
TO MATCH SUPPLY
8. FOCUS ON END-
TO-END
OPTIMIZATIONS
THAT INCREASE
OVERALL CARBON
EFFICIENCY
Can we build a carbon-friendly app?
• Should we build a web site?
• Mobile app?
• Desktop app?
Problem: building fresh web assets that are always online
consume unnecessary energy to keep them live
Solution: cloud hosting can help spin up assets when
requested/needed, or an offline-first strategy can keep energy
requests low
A better solution
• Let’s build something that
is hosted locally
• It can answer several
‘principles’
• A browser extension!
1. BUILD APPLICATIONS
THAT ARE CARBON
EFFICIENT
2. BUILD APPLICATIONS
THAT ARE ENERGY
EFFICIENT
6. REDUCE THE AMOUNT
OF DATA AND THE
DISTANCE IT MUST
TRAVEL ACROSS THE
NETWORK
7. INSTEAD OF SHAPING
SUPPLY TO MEET
DEMAND, TRY SHAPING
DEMAND TO MATCH
SUPPLY
A green
browser
extension
Help you make
educated
decisions to
manage your
personal energy
usage choices
Hosted locally
Called ad hoc
Built with vanilla
JavaScript, very
little overhead
C A R E F U
L N O W !
T H E
G R E E N E S T
A P P = T H E
O N E Y O U
D O N ’ T
B U I L D !
Let’s build a
browser
extension
•Use the C02Signal API
•Change color of icon
based on carbon
intensity in your region
•Get a quick readout of
your region’s carbon
status
•Knowledge = power! ⚡️
💡Save
power by
boosting
knowledge!
D E M O O N
E D G E
B R O W S E R
( A L S O W O R K S
O N C H R O M E )
1. Clone the repo: https://github.com/jlooper/carbon-trigger-
extension/tree/start
** use the start branch **
2. Navigate to the root and `npm install` dependencies
3. Explore the files:
- dist/manifest.json (defaults set here)
- src/index.js (your JS code goes here)
- dist/index.html (frontend HTML markup here)
- dist/background.js (background JS here)
- dist/index.js (built JS)
Let’s build together
1. Build a copy of your
extension: `npm run
build`
2. Add extension to
Edge
Development process
1
2
3
1. Take a look at the energy map here:
https://www.electricitymap.org/map
2. Get an API key here: https://www.co2signal.com/ (the key
will be emailed to you quickly)
3. Find your zone here:
http://api.electricitymap.org/v3/zones
Complete the code: follow the 🌱
Pre-development tasks
/src/index.js
Add a check to the init() function to see if any API
key or Region is set in local storage:
🌱 1: if anything is in localStorage, pick it up
🌱
/src/index.js
In the setUpUser method, set user-entered API key and region
🌱 2. manage local storage inputs 🌱
/src/index.js
Once user inputs are set up in setUpUser, make an
API call to get the region’s carbon intensity
🌱 3. make initial call 🌱
🌱4. display usage and carbon source🌱
/src/index.js
Make the API call to get your region’s usage, and display
it
🌱 5. set icon to be generic green🌱
/src/index.js
Set the icon to a default; it will change when the API is called. This function uses the chrome runtime
built-in management methods
🌱6. calculate color of icon, based on carbon intensity🌱
/src/index.js
Calculate the appropriate color of the icon, which changes based on an active API call
🌱 7. update icon 🌱
/src/index.js
In calculateColor(), update the icon, again calling the chrome.runtime to invoke a background process
🌱 7. update icon 🌱
/dist/background.js
In the listener for ‘updateIcon’, create a browser action to redraw the icon using the Canvas HTML API
Build and
Load
Extension
Navigate to root and type `npm run
build` to build a new bundle via webpack
In the Extensions panel, refresh your
extension. Add your API key and region
and check your region’s carbon intensity.
Congratulations, now you know when to
run an errand or run the dryer! Just
consult your ad hoc browser extension!
Remember…the greenest
web asset is the slimmest,
the one with the least
overhead, and the one
that is only called ad hoc.
Plus, you built something
slim that helps you make
greener decisions!
To: An Awesome Web Developer
123 Maple Lane
Greentown, CO
00000
T H A N K
Y O U !
@JENLOOPER
JENLOOPER.CO
M

More Related Content

Similar to Becoming a Green Developer

The Art of Mobile Performance (Mobiconf 2015)
The Art of Mobile Performance (Mobiconf 2015)The Art of Mobile Performance (Mobiconf 2015)
The Art of Mobile Performance (Mobiconf 2015)David Low
 
Indoor Positioning System
Indoor Positioning SystemIndoor Positioning System
Indoor Positioning SystemSarnava Konar
 
Stop Doing the Wrong Mobile Math
Stop Doing the Wrong Mobile MathStop Doing the Wrong Mobile Math
Stop Doing the Wrong Mobile MathSourcebits
 
apidays Singapore 2023 - Changing the culture of building software, Aman Dham...
apidays Singapore 2023 - Changing the culture of building software, Aman Dham...apidays Singapore 2023 - Changing the culture of building software, Aman Dham...
apidays Singapore 2023 - Changing the culture of building software, Aman Dham...apidays
 
INTERFACE by apidays 2023 - Imbibing Sustainability in Software Development, ...
INTERFACE by apidays 2023 - Imbibing Sustainability in Software Development, ...INTERFACE by apidays 2023 - Imbibing Sustainability in Software Development, ...
INTERFACE by apidays 2023 - Imbibing Sustainability in Software Development, ...apidays
 
Generating Insights from WSO2 API Manager Statistics
Generating Insights from WSO2 API Manager StatisticsGenerating Insights from WSO2 API Manager Statistics
Generating Insights from WSO2 API Manager StatisticsWSO2
 
Green Digital Skills Presentation.pptx
Green Digital Skills Presentation.pptxGreen Digital Skills Presentation.pptx
Green Digital Skills Presentation.pptxLavinia856482
 
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...IndicThreads
 
React Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdfReact Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdfTechugo
 
App42 Student Lab - Android Game Dev Series V 0.1
App42 Student Lab - Android Game Dev Series V 0.1App42 Student Lab - Android Game Dev Series V 0.1
App42 Student Lab - Android Game Dev Series V 0.1ShepHertz
 
Full-stack Web Development with MongoDB, Node.js and AWS
Full-stack Web Development with MongoDB, Node.js and AWSFull-stack Web Development with MongoDB, Node.js and AWS
Full-stack Web Development with MongoDB, Node.js and AWSMongoDB
 
React Native Local Database For Super Smart Applications.pdf
React Native Local Database For Super Smart Applications.pdfReact Native Local Database For Super Smart Applications.pdf
React Native Local Database For Super Smart Applications.pdfKaty Slemon
 
Tools and best practices for sustainable software
Tools and best practices for sustainable softwareTools and best practices for sustainable software
Tools and best practices for sustainable softwareGreen Software Development
 
Tools and best practices for sustainable software.pdf
Tools and best practices for sustainable software.pdfTools and best practices for sustainable software.pdf
Tools and best practices for sustainable software.pdfGeorgMolz
 
Tools and best practices for sustainable software.pdf
Tools and best practices for sustainable software.pdfTools and best practices for sustainable software.pdf
Tools and best practices for sustainable software.pdfGeorgMolz
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...PROIDEA
 
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...Michael Elder
 

Similar to Becoming a Green Developer (20)

The Art of Mobile Performance (Mobiconf 2015)
The Art of Mobile Performance (Mobiconf 2015)The Art of Mobile Performance (Mobiconf 2015)
The Art of Mobile Performance (Mobiconf 2015)
 
Indoor Positioning System
Indoor Positioning SystemIndoor Positioning System
Indoor Positioning System
 
Stop Doing the Wrong Mobile Math
Stop Doing the Wrong Mobile MathStop Doing the Wrong Mobile Math
Stop Doing the Wrong Mobile Math
 
apidays Singapore 2023 - Changing the culture of building software, Aman Dham...
apidays Singapore 2023 - Changing the culture of building software, Aman Dham...apidays Singapore 2023 - Changing the culture of building software, Aman Dham...
apidays Singapore 2023 - Changing the culture of building software, Aman Dham...
 
Synopsis
SynopsisSynopsis
Synopsis
 
INTERFACE by apidays 2023 - Imbibing Sustainability in Software Development, ...
INTERFACE by apidays 2023 - Imbibing Sustainability in Software Development, ...INTERFACE by apidays 2023 - Imbibing Sustainability in Software Development, ...
INTERFACE by apidays 2023 - Imbibing Sustainability in Software Development, ...
 
Generating Insights from WSO2 API Manager Statistics
Generating Insights from WSO2 API Manager StatisticsGenerating Insights from WSO2 API Manager Statistics
Generating Insights from WSO2 API Manager Statistics
 
Green Digital Skills Presentation.pptx
Green Digital Skills Presentation.pptxGreen Digital Skills Presentation.pptx
Green Digital Skills Presentation.pptx
 
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...
Performance in Android: Tips and Techniques [IndicThreads Mobile Application ...
 
React Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdfReact Native Market Overview for Cross-Platform App Development.pdf
React Native Market Overview for Cross-Platform App Development.pdf
 
App42 Student Lab - Android Game Dev Series V 0.1
App42 Student Lab - Android Game Dev Series V 0.1App42 Student Lab - Android Game Dev Series V 0.1
App42 Student Lab - Android Game Dev Series V 0.1
 
Full-stack Web Development with MongoDB, Node.js and AWS
Full-stack Web Development with MongoDB, Node.js and AWSFull-stack Web Development with MongoDB, Node.js and AWS
Full-stack Web Development with MongoDB, Node.js and AWS
 
React Native Local Database For Super Smart Applications.pdf
React Native Local Database For Super Smart Applications.pdfReact Native Local Database For Super Smart Applications.pdf
React Native Local Database For Super Smart Applications.pdf
 
Tools and best practices for sustainable software
Tools and best practices for sustainable softwareTools and best practices for sustainable software
Tools and best practices for sustainable software
 
Tools and best practices for sustainable software.pdf
Tools and best practices for sustainable software.pdfTools and best practices for sustainable software.pdf
Tools and best practices for sustainable software.pdf
 
Tools and best practices for sustainable software.pdf
Tools and best practices for sustainable software.pdfTools and best practices for sustainable software.pdf
Tools and best practices for sustainable software.pdf
 
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
Containers, Serverless, Polyglot Development World, And Others…10 trends resh...
 
Binary Convater
Binary ConvaterBinary Convater
Binary Convater
 
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...
DBD 2414 - Iterative Web-Based Designer for Software Defined Environments (In...
 
Presentation.pptx
Presentation.pptxPresentation.pptx
Presentation.pptx
 

More from Jen Looper

Staying Fresh and Avoiding Burnout
Staying Fresh and Avoiding BurnoutStaying Fresh and Avoiding Burnout
Staying Fresh and Avoiding BurnoutJen Looper
 
Game On With NativeScript
Game On With NativeScriptGame On With NativeScript
Game On With NativeScriptJen Looper
 
NativeScript and Angular
NativeScript and AngularNativeScript and Angular
NativeScript and AngularJen Looper
 
Sharing Code between Web and Mobile Apps
Sharing Code between Web and Mobile AppsSharing Code between Web and Mobile Apps
Sharing Code between Web and Mobile AppsJen Looper
 
Beacons, Plants, Boxes
Beacons, Plants, BoxesBeacons, Plants, Boxes
Beacons, Plants, BoxesJen Looper
 
Ignite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseIgnite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseJen Looper
 
Hackathon Slides
Hackathon SlidesHackathon Slides
Hackathon SlidesJen Looper
 
Using Beacons in a Mobile App - IoT Nearables
Using Beacons in a Mobile App - IoT NearablesUsing Beacons in a Mobile App - IoT Nearables
Using Beacons in a Mobile App - IoT NearablesJen Looper
 
Swipe Left for NativeScript
Swipe Left for NativeScriptSwipe Left for NativeScript
Swipe Left for NativeScriptJen Looper
 
Angular 2 and NativeScript
Angular 2 and NativeScriptAngular 2 and NativeScript
Angular 2 and NativeScriptJen Looper
 
Crafting an Adventure: The Azure Maya Mystery
Crafting an Adventure: The Azure Maya MysteryCrafting an Adventure: The Azure Maya Mystery
Crafting an Adventure: The Azure Maya MysteryJen Looper
 
Re-Building a Tech Community - Post Pandemic!
Re-Building a Tech Community - Post Pandemic!Re-Building a Tech Community - Post Pandemic!
Re-Building a Tech Community - Post Pandemic!Jen Looper
 
Building a Tech Community in Ten Easy Steps
Building a Tech Community in Ten Easy StepsBuilding a Tech Community in Ten Easy Steps
Building a Tech Community in Ten Easy StepsJen Looper
 
Azure Static Web Apps
Azure Static Web AppsAzure Static Web Apps
Azure Static Web AppsJen Looper
 
Creating a Great Workshop
Creating a Great WorkshopCreating a Great Workshop
Creating a Great WorkshopJen Looper
 
The Ethics of Generative AI: A Humanist's Guide
The Ethics of Generative AI: A Humanist's GuideThe Ethics of Generative AI: A Humanist's Guide
The Ethics of Generative AI: A Humanist's GuideJen Looper
 
Zero to Hipster with the M.I.K.E. Stack
Zero to Hipster with the M.I.K.E. StackZero to Hipster with the M.I.K.E. Stack
Zero to Hipster with the M.I.K.E. StackJen Looper
 
Telerik AppBuilder, Estimote Beacons, and the IoT - Presentation for TelerikNEXT
Telerik AppBuilder, Estimote Beacons, and the IoT - Presentation for TelerikNEXTTelerik AppBuilder, Estimote Beacons, and the IoT - Presentation for TelerikNEXT
Telerik AppBuilder, Estimote Beacons, and the IoT - Presentation for TelerikNEXTJen Looper
 
Telerik AppBuilder Presentation for TelerikNEXT Conference
Telerik AppBuilder Presentation for TelerikNEXT ConferenceTelerik AppBuilder Presentation for TelerikNEXT Conference
Telerik AppBuilder Presentation for TelerikNEXT ConferenceJen Looper
 

More from Jen Looper (19)

Staying Fresh and Avoiding Burnout
Staying Fresh and Avoiding BurnoutStaying Fresh and Avoiding Burnout
Staying Fresh and Avoiding Burnout
 
Game On With NativeScript
Game On With NativeScriptGame On With NativeScript
Game On With NativeScript
 
NativeScript and Angular
NativeScript and AngularNativeScript and Angular
NativeScript and Angular
 
Sharing Code between Web and Mobile Apps
Sharing Code between Web and Mobile AppsSharing Code between Web and Mobile Apps
Sharing Code between Web and Mobile Apps
 
Beacons, Plants, Boxes
Beacons, Plants, BoxesBeacons, Plants, Boxes
Beacons, Plants, Boxes
 
Ignite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and FirebaseIgnite your app development with Angular, NativeScript and Firebase
Ignite your app development with Angular, NativeScript and Firebase
 
Hackathon Slides
Hackathon SlidesHackathon Slides
Hackathon Slides
 
Using Beacons in a Mobile App - IoT Nearables
Using Beacons in a Mobile App - IoT NearablesUsing Beacons in a Mobile App - IoT Nearables
Using Beacons in a Mobile App - IoT Nearables
 
Swipe Left for NativeScript
Swipe Left for NativeScriptSwipe Left for NativeScript
Swipe Left for NativeScript
 
Angular 2 and NativeScript
Angular 2 and NativeScriptAngular 2 and NativeScript
Angular 2 and NativeScript
 
Crafting an Adventure: The Azure Maya Mystery
Crafting an Adventure: The Azure Maya MysteryCrafting an Adventure: The Azure Maya Mystery
Crafting an Adventure: The Azure Maya Mystery
 
Re-Building a Tech Community - Post Pandemic!
Re-Building a Tech Community - Post Pandemic!Re-Building a Tech Community - Post Pandemic!
Re-Building a Tech Community - Post Pandemic!
 
Building a Tech Community in Ten Easy Steps
Building a Tech Community in Ten Easy StepsBuilding a Tech Community in Ten Easy Steps
Building a Tech Community in Ten Easy Steps
 
Azure Static Web Apps
Azure Static Web AppsAzure Static Web Apps
Azure Static Web Apps
 
Creating a Great Workshop
Creating a Great WorkshopCreating a Great Workshop
Creating a Great Workshop
 
The Ethics of Generative AI: A Humanist's Guide
The Ethics of Generative AI: A Humanist's GuideThe Ethics of Generative AI: A Humanist's Guide
The Ethics of Generative AI: A Humanist's Guide
 
Zero to Hipster with the M.I.K.E. Stack
Zero to Hipster with the M.I.K.E. StackZero to Hipster with the M.I.K.E. Stack
Zero to Hipster with the M.I.K.E. Stack
 
Telerik AppBuilder, Estimote Beacons, and the IoT - Presentation for TelerikNEXT
Telerik AppBuilder, Estimote Beacons, and the IoT - Presentation for TelerikNEXTTelerik AppBuilder, Estimote Beacons, and the IoT - Presentation for TelerikNEXT
Telerik AppBuilder, Estimote Beacons, and the IoT - Presentation for TelerikNEXT
 
Telerik AppBuilder Presentation for TelerikNEXT Conference
Telerik AppBuilder Presentation for TelerikNEXT ConferenceTelerik AppBuilder Presentation for TelerikNEXT Conference
Telerik AppBuilder Presentation for TelerikNEXT Conference
 

Recently uploaded

Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.eptoze12
 
Heart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxHeart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxPoojaBan
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AIabhishek36461
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsCall Girls in Nagpur High Profile
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...ranjana rawat
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...VICTOR MAESTRE RAMIREZ
 
Introduction to Microprocesso programming and interfacing.pptx
Introduction to Microprocesso programming and interfacing.pptxIntroduction to Microprocesso programming and interfacing.pptx
Introduction to Microprocesso programming and interfacing.pptxvipinkmenon1
 
GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSCAESB
 
HARMONY IN THE HUMAN BEING - Unit-II UHV-2
HARMONY IN THE HUMAN BEING - Unit-II UHV-2HARMONY IN THE HUMAN BEING - Unit-II UHV-2
HARMONY IN THE HUMAN BEING - Unit-II UHV-2RajaP95
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerAnamika Sarkar
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfAsst.prof M.Gokilavani
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024hassan khalil
 
Current Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLCurrent Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLDeelipZope
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130Suhani Kapoor
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130Suhani Kapoor
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girlsssuser7cb4ff
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Dr.Costas Sachpazis
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escortsranjana rawat
 

Recently uploaded (20)

Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.Oxy acetylene welding presentation note.
Oxy acetylene welding presentation note.
 
Heart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptxHeart Disease Prediction using machine learning.pptx
Heart Disease Prediction using machine learning.pptx
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AI
 
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Meera Call 7001035870 Meet With Nagpur Escorts
 
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
(ANVI) Koregaon Park Call Girls Just Call 7001035870 [ Cash on Delivery ] Pun...
 
Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...Software and Systems Engineering Standards: Verification and Validation of Sy...
Software and Systems Engineering Standards: Verification and Validation of Sy...
 
Introduction to Microprocesso programming and interfacing.pptx
Introduction to Microprocesso programming and interfacing.pptxIntroduction to Microprocesso programming and interfacing.pptx
Introduction to Microprocesso programming and interfacing.pptx
 
GDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentationGDSC ASEB Gen AI study jams presentation
GDSC ASEB Gen AI study jams presentation
 
HARMONY IN THE HUMAN BEING - Unit-II UHV-2
HARMONY IN THE HUMAN BEING - Unit-II UHV-2HARMONY IN THE HUMAN BEING - Unit-II UHV-2
HARMONY IN THE HUMAN BEING - Unit-II UHV-2
 
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube ExchangerStudy on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
Study on Air-Water & Water-Water Heat Exchange in a Finned Tube Exchanger
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
 
Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024Architect Hassan Khalil Portfolio for 2024
Architect Hassan Khalil Portfolio for 2024
 
Current Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCLCurrent Transformer Drawing and GTP for MSETCL
Current Transformer Drawing and GTP for MSETCL
 
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
VIP Call Girls Service Hitech City Hyderabad Call +91-8250192130
 
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
VIP Call Girls Service Kondapur Hyderabad Call +91-8250192130
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
★ CALL US 9953330565 ( HOT Young Call Girls In Badarpur delhi NCR
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girls
 
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
Sheet Pile Wall Design and Construction: A Practical Guide for Civil Engineer...
 
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur EscortsHigh Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
High Profile Call Girls Nagpur Isha Call 7001035870 Meet With Nagpur Escorts
 

Becoming a Green Developer

  • 1. B E C O M I N G A G R E E N D E V E L O P E R J E N L O O P E R C L O U D D E V E L O P E R A D V O C A T E M I C R O S O F T
  • 2. A G E N D A - L E A R N A B O U T S U S T A I N A B L E S O F T W A R E D E V E L O P M E N T - C O D E T O G E T H E R !
  • 3. What is sustainable software development? An emerging discipline at the intersection of: 🌱 climate science 💻 software practices and architecture 💡electricity markets 🔌 hardware and data center design https://principles.green/
  • 4. Goals By following certain recommendations, a Sustainable Software Engineer can make decisions that have a meaningful impact on the carbon impact of their applications. Let’s look at these 8 recommendations
  • 5. 8 principles 1. BUILD APPLICATIONS THAT ARE CARBON EFFICIENT 2. BUILD APPLICATIONS THAT ARE ENERGY EFFICIENT 3. CONSUME ELECTRICITY WITH THE LOWEST CARBON INTENSITY 4. BUILD APPLICATIONS THAT RUN ON OLDER HARDWARE 5. RUN SERVERS AT A HIGH RATE OF UTILIZATION 6. REDUCE THE AMOUNT OF DATA AND THE DISTANCE IT MUST TRAVEL ACROSS THE NETWORK 7. INSTEAD OF SHAPING SUPPLY TO MEET DEMAND, TRY SHAPING DEMAND TO MATCH SUPPLY 8. FOCUS ON END- TO-END OPTIMIZATIONS THAT INCREASE OVERALL CARBON EFFICIENCY
  • 6. Can we build a carbon-friendly app? • Should we build a web site? • Mobile app? • Desktop app? Problem: building fresh web assets that are always online consume unnecessary energy to keep them live Solution: cloud hosting can help spin up assets when requested/needed, or an offline-first strategy can keep energy requests low
  • 7. A better solution • Let’s build something that is hosted locally • It can answer several ‘principles’ • A browser extension! 1. BUILD APPLICATIONS THAT ARE CARBON EFFICIENT 2. BUILD APPLICATIONS THAT ARE ENERGY EFFICIENT 6. REDUCE THE AMOUNT OF DATA AND THE DISTANCE IT MUST TRAVEL ACROSS THE NETWORK 7. INSTEAD OF SHAPING SUPPLY TO MEET DEMAND, TRY SHAPING DEMAND TO MATCH SUPPLY
  • 8. A green browser extension Help you make educated decisions to manage your personal energy usage choices Hosted locally Called ad hoc Built with vanilla JavaScript, very little overhead
  • 9. C A R E F U L N O W !
  • 10. T H E G R E E N E S T A P P = T H E O N E Y O U D O N ’ T B U I L D !
  • 11. Let’s build a browser extension •Use the C02Signal API •Change color of icon based on carbon intensity in your region •Get a quick readout of your region’s carbon status •Knowledge = power! ⚡️ 💡Save power by boosting knowledge!
  • 12. D E M O O N E D G E B R O W S E R ( A L S O W O R K S O N C H R O M E )
  • 13. 1. Clone the repo: https://github.com/jlooper/carbon-trigger- extension/tree/start ** use the start branch ** 2. Navigate to the root and `npm install` dependencies 3. Explore the files: - dist/manifest.json (defaults set here) - src/index.js (your JS code goes here) - dist/index.html (frontend HTML markup here) - dist/background.js (background JS here) - dist/index.js (built JS) Let’s build together
  • 14. 1. Build a copy of your extension: `npm run build` 2. Add extension to Edge Development process 1 2 3
  • 15. 1. Take a look at the energy map here: https://www.electricitymap.org/map 2. Get an API key here: https://www.co2signal.com/ (the key will be emailed to you quickly) 3. Find your zone here: http://api.electricitymap.org/v3/zones Complete the code: follow the 🌱 Pre-development tasks
  • 16. /src/index.js Add a check to the init() function to see if any API key or Region is set in local storage: 🌱 1: if anything is in localStorage, pick it up 🌱
  • 17. /src/index.js In the setUpUser method, set user-entered API key and region 🌱 2. manage local storage inputs 🌱
  • 18. /src/index.js Once user inputs are set up in setUpUser, make an API call to get the region’s carbon intensity 🌱 3. make initial call 🌱
  • 19. 🌱4. display usage and carbon source🌱 /src/index.js Make the API call to get your region’s usage, and display it
  • 20. 🌱 5. set icon to be generic green🌱 /src/index.js Set the icon to a default; it will change when the API is called. This function uses the chrome runtime built-in management methods
  • 21. 🌱6. calculate color of icon, based on carbon intensity🌱 /src/index.js Calculate the appropriate color of the icon, which changes based on an active API call
  • 22. 🌱 7. update icon 🌱 /src/index.js In calculateColor(), update the icon, again calling the chrome.runtime to invoke a background process
  • 23. 🌱 7. update icon 🌱 /dist/background.js In the listener for ‘updateIcon’, create a browser action to redraw the icon using the Canvas HTML API
  • 24. Build and Load Extension Navigate to root and type `npm run build` to build a new bundle via webpack In the Extensions panel, refresh your extension. Add your API key and region and check your region’s carbon intensity. Congratulations, now you know when to run an errand or run the dryer! Just consult your ad hoc browser extension!
  • 25. Remember…the greenest web asset is the slimmest, the one with the least overhead, and the one that is only called ad hoc. Plus, you built something slim that helps you make greener decisions! To: An Awesome Web Developer 123 Maple Lane Greentown, CO 00000
  • 26. T H A N K Y O U ! @JENLOOPER JENLOOPER.CO M