SlideShare ist ein Scribd-Unternehmen logo
1 von 62
Downloaden Sie, um offline zu lesen
June 3-5, 2014 | Berlin, Germany
@kannonboy
Timothy Pettersen, Developer Advocate, Atlassian
Static Connect
Add-ons
BRACEYOURSELVESBRACEYOURSELVES
ATLASSIANCONNECTISCOMINGATLASSIANCONNECTISCOMING
1/7THOFACENTPERUSERPERMONTH?1/7THOFACENTPERUSERPERMONTH?
MYFANTASTICMARKETPLACEPROFITSSHOULD
COVERTHAT
MYFANTASTICMARKETPLACEPROFITSSHOULD
COVERTHAT
Fantastic
Profits
Outrageous
Profits
Fantastic
Profits
Demo Time
Traditional Web Apps
HTML	

CSS	

JS
Browser
App
Server
GET /some/resource
POST /some/form
Static Web Apps
HTML	

CSS	

JS
Browser
Web	

Server
GET /some/resource
Static Web Apps
HTML	

CSS	

JS
Browser CDN
GET /some/resource
Cheap & Fast!
Easy to cache
Static Add-Ons
HTML	

CSS	

JS
Browser
GET /resource
Full REST API
CDN
X-Domain
JavaScript API
4 reasons why static add-ons
are awesome
Performance
Scalability
Security
Dev Loop
Static Connect Add-ons
LICENSING
STORING STUFF
ANATOMY OF A STATIC ADD-
WHAT IF I NEED A BACKEND?
Static Connect Add-ons
LICENSING
STORING STUFF
ANATOMY OF A STATIC ADD-
WHAT IF I NEED A BACKEND?
ANATOMY OF A STATIC ADD-
Static Add-Ons
Browser HTML	

CSS	

JS
GET /resourceX-Domain
JavaScript API
CDN
GET /atlassian-connect.json
Static Add-Ons
Browser CDNHTML	

CSS	

JS
GET /resourceX-Domain
JavaScript API
GET /atlassian-connect.json
Authentication
authentication: {!
"type": “none”!
}!
scopes: [!
“read”, “write”,!
! “delete”, “admin”!
]!
Callbacks
“lifecycle”: {!
"installed": "/installed",!
"uninstalled": "/uninstalled",!
"enabled": "/enabled",!
"disabled": "/disabled"!
}
"webhooks": [{!
“event": "jira:issue_created",!
"url": "/issue-created"!
}]
Pages & Web Fragments
“adminPages”: [..],!
“generalPages”: [..],!
“profilePages”: [..],!
“configurePage”: {}
“webSections”: [..],!
“webPanels”: [..],!
“webItems”: [..]!
Tab Panels
“jiraProjectAdminTabPanels”: [..],!
“jiraIssueTabPanels”: [..],!
“jiraComponentTabPanels”: [..],!
“jiraProfileTabPanels”: [..],!
“jiraProjectTabPanels”: [..],!
“jiraVersionTabPanels”: [..],!
“spaceToolsTabs”: [..]!
Macros
“dynamicContentMacros”: [..]!
“staticContentMacros”: [..]!
Static Add-Ons
HTML	

CSS	

JS
Browser
GET /resource
CDN
GET /atlassian-connect.json
X-Domain
JavaScript API
Static Add-Ons
HTML	

CSS	

JS
Browser
GET /resource
CDN
GET /atlassian-connect.json
X-Domain
JavaScript API
Static Connect Boilerplate
<head>!
<link rel="stylesheet" href=“//aui-cdn.atlassian.com/../aui.css”> !
<script src=“//cdnjs.cloudflare.com/../jquery.js”></script>!
<script src=“//aui-cdn.atlassian.com/../aui.js”></script>!
<!--[if IE]>!
<script src=“//aui-cdn.atlassian.com/../aui-ie.js”></script>!
<![endif]—>!
<script src=“//aui-cdn.atlassian.com/../include-all.js”></script>!
!
<script src=“//somecdn.com/../space-graph.js”></script>!
<link rel="stylesheet" href=“//somecdn.com/../space-graph.css”>!
</head>!
..
no-cache
Static Caching
Browser CDN
HTML
JS, CSS
Cache-Control:
Expires: Tue, 3 Aug 2032 12:00:00 GMT
public
Versioned URLs
<head>!
<script src=“//mycdn/../v1/space-graph.js”></script>!
<link rel="stylesheet" href=“//mycdn/../v1/space-graph.css”>!
</head>!
..
<head>!
<script src=“//mycdn/../v2/space-graph.js”></script>!
<link rel="stylesheet" href=“//mycdn/../v2/space-graph.css”>!
</head>!
..
Context parameters
generalPages: [{!
"key": "space-graph",!
"url": "/space-graph.html?spaceKey={space.key}",!
"location": "system.content.action",!
"name": {!
"value": "Space Graph"!
}!
}]
<iframe src=“https://somecdn.com/space-graph.html?spaceKey=JRA”>
<iframe src=“https://somecdn.com/space-graph.html?spaceKey=CONF”>!
<iframe src=“https://somecdn.com/space-graph.html?spaceKey=…”>
Static Add-Ons
HTML	

CSS	

JS
Browser
GET /resource
CDN
GET /atlassian-connect.json
X-Domain
JavaScript API
Static Add-Ons
HTML	

CSS	

JS
Browser
GET /resource
CDN
GET /atlassian-connect.json
X-Domain
JavaScript API
include-all.js
function includeAll(callback) {!
// parse query parameters from web-panel iframe URL!
var host = getQueryParam(“xdm_e”);!
var contextPath = getQueryParam(“cp”);!
!
// construct URL targeting host application!
var allUrl = host + contextPath + “/atlassian-connect/all.js";!
!
// retrieve script asynchronously!
jQuery.getScript(allUrl, function () {!
// window.AP is now available !
// can now launch pop-ups, use REST APIs and interact with host UI!
callback(window.AP);!
});!
}
AP API
includeAll(function(AP) {!
! // use the REST API!
! AP.request({!
! ! url: “/rest/prototype/1/space/" + spaceKey + ".json?expand=rootpages”,!
! ! type: “GET”,!
! ! success: function(spaceJson) {!
! ! ! // parse root pages from space object!
! ! }!
! });!
! !
! // display messages!
! AP.messages.info(“Space Graph”, “Initializing Space Graph for ” + spaceKey);!
!
! // plus AP.events, AP.dialog, AP.cookie, etc.!
}
Static Connect Add-ons
STORING STUFF
ANATOMY OF A STATIC ADD-
WHAT IF I NEED A BACKEND?
LICENSING
//obfuscated!
var _0x81b0=["x6C
x69x63","x61x63x74x69x76x65","x65x78x70x69x
72x65x64"];var d=a(_0x81b0[0]);switch(d){case
_0x81b0[1]:break;case _0x81b0[2]:b();break;case
_0x81b0[1]:c();break;}
// minified!
var d=a("lic");switch(d)
{case"active":break;case"expired":b();break;case"active"
:c();break}
lic parameter
switch (getQueryParameter("lic")) {!
case "active":!
// license is valid!
break;!
case "expired":!
doExpired();!
break;!
case "none":!
doUnlicensed();!
break;!
}
We’ve got your back
Static Connect Add-ons
LICENSING
ANATOMY OF A STATIC ADD-
WHAT IF I NEED A BACKEND?
STORING STUFF
Third-party cookies
<iframe>
AP.cookie
// AP.cookie!
// .save(name, value, expires);!
// .read(name, callback);!
// .erase(name);
// example: display a welcome message once per user!
AP.cookie.read(“seen.welcome.message”, function(val) {!!
!
! if (val !== “true”) {!
! ! displayFirstTimeWelcomeMessage();!
! ! AP.cookie.save(“seen.welcome.message”, “true”, 365);!
! }!
! !
});!
@Tim Pettersen: this page
looks old. Please check if we
can delete it.
Confluence Content Properties
// example: store a JSON object against the selected page!
var propertyKey = “note”;!
var propertyValue = {created: todaysDate, body: bodyText};
// POST -> CREATE, GET -> RETRIEVE, PUT -> UPDATE, DELETE -> DELETE
AP.request({!
! url: “/rest/api/1/experimental/content/“ + pageId + ”/property”,!
! type: “POST”,!
contentType: “application/json”,!
! data: JSON.stringify({key: propertyKey, value: propertyValue}) !
});
JIRA Entity Properties
// example: store a JSON object against an issue!
var propertyKey = “note”;!
var propertyValue = {created: todaysDate, body: bodyText};!
!
AP.request({!
! url: “/rest/api/2/issue/“ + issueKey + “/properties/” + propertyKey,!
! type: “POST”,!
contentType: “application/json”,!
! data: JSON.stringify(propertyValue)!
});
// POST -> CREATE, GET -> RETRIEVE, PUT -> UPDATE, DELETE -> DELETE
Indexing Entity Properties
"jiraEntityProperties": [{!
"name": {!
"value" : ”Issue Notes"!
},!
"entityType": "issue",!
"keyConfigurations": [{!
"propertyKey" : "note",!
"extractions" : [{!
"objectName" : "created",!
"type" : “date"!
}, {!
! ! ! ! "objectName" : "created",!
"type" : “text" // or number, string!
! ! }]!
}]!
}]!
ALSO AVAILABLE IN P2
JQL: !
issue.property[note].bodyText ~ “foo” or!
issue.property[note].created > startOfMonth()
Storage Options
AP.cookie
Very fast (local)!
Scoped to the browser!
Size limited!
Temporary storage!
Use for user
preference, recent
history, etc.
Entity storage
Slower (ajax roundtrip)!
Scoped to the entity!
Size limited!
Permanent storage !
Use for annotating
issues or pages with
data
Backend
!
?
Static Connect Add-ons
STORING STUFF
LICENSING
ANATOMY OF A STATIC ADD-
WHAT IF I NEED A BACKEND?
Are you sure?
Are you sure?
Analytics Mapping Realtime Charting Rendering
Imaging Video AudioGraphs Code
Static limitations
• Web hooks!
• Long running tasks!
• Indexing!
• Aggregation!
• Secret credentials!
• Notifications
Static Add-Ons
Browser HTML	

CSS	

JS
CDN
GET /resource
X-Domain
JavaScript API
Hybrid Add-Ons
Browser HTML	

CSS	

JS
CDN
GET /resource
X-Domain
JavaScript API
Service A
Service B
?
?
• Persistence
• Authentication
• Email / IM
• 3rd party web services
• Other server-side stuff
Hybrid Add-Ons
Browser
• Real-time storage & sync
• Authentication
• Generous free dev plan (50 connections)
• Now with hosting / CDN
• Real-time storage & sync
• Authentication
• Self-hosted
• FOSS
• Real-time storage & sync
• Integration with 3rd party services:
Mailgun, Mandrill, SendGrid, Stripe,
Twilio
• Generous free dev plan (30 req / sec)
Send Email
Send Email
Custom backend
Browser CDNGET /resourcespace-
graph.io
POST /send-mail
Same origin policy
WebSockets
Browser CDNGET /resourcespace-
graph.io
WebSockets
Browser
space-
graph.io
// setup websocket & email data!
var ws = new WebSocket(“myaddon.io”);!
var email = {to: “foo@bar.com”, ..};!
!
// wait for connection then send data!
ws.onopen(function() {!
ws.send(JSON.stringify(email));!
});!
!
// wait for confirmation!
ws.onmessage(function(event) {!
if (event.data === “ok”) {!
AP.messages.info(“Email sent!”);!
}!
});
Browser
space-
graph.io
CORS (Cross Origin Resource Sharing)
OPTIONS /send-mail
Access-Control-Allow-Origin: https://somecdn.com
POST /send-mail
200 OK
Static Connect Add-ons
LICENSING
STORING STUFF
ANATOMY OF A STATIC ADD-
WHAT IF I NEED A BACKEND?
• Space Graph!
• Google Maps Macro!
• Who's Looking v2!
• Web Sequence Diagrammer v2
Example Static Add-Ons
Performance == happy users
Scalability == happy accountants
Security == happy Atlassian
Dev Loop == happy developers (you!)
Four awesome reasons
tpettersen.bitbucket.org/static
Questions?
@kannonboy

Weitere ähnliche Inhalte

Was ist angesagt?

Александр Сергиенко, Senior Android Developer, DataArt
Александр Сергиенко, Senior Android Developer, DataArtАлександр Сергиенко, Senior Android Developer, DataArt
Александр Сергиенко, Senior Android Developer, DataArt
Alina Vilk
 

Was ist angesagt? (20)

Altitude SF 2017: Debugging Fastly VCL 101
Altitude SF 2017: Debugging Fastly VCL 101Altitude SF 2017: Debugging Fastly VCL 101
Altitude SF 2017: Debugging Fastly VCL 101
 
Александр Сергиенко, Senior Android Developer, DataArt
Александр Сергиенко, Senior Android Developer, DataArtАлександр Сергиенко, Senior Android Developer, DataArt
Александр Сергиенко, Senior Android Developer, DataArt
 
Connecting to Web Services on Android
Connecting to Web Services on AndroidConnecting to Web Services on Android
Connecting to Web Services on Android
 
How to investigate and recover from a security breach in WordPress
How to investigate and recover from a security breach in WordPressHow to investigate and recover from a security breach in WordPress
How to investigate and recover from a security breach in WordPress
 
Web Cache Deception Attack
Web Cache Deception AttackWeb Cache Deception Attack
Web Cache Deception Attack
 
Search in WordPress - how it works and howto customize it
Search in WordPress - how it works and howto customize itSearch in WordPress - how it works and howto customize it
Search in WordPress - how it works and howto customize it
 
Use Xdebug to profile PHP
Use Xdebug to profile PHPUse Xdebug to profile PHP
Use Xdebug to profile PHP
 
Going on an HTTP Diet: Front-End Web Performance
Going on an HTTP Diet: Front-End Web PerformanceGoing on an HTTP Diet: Front-End Web Performance
Going on an HTTP Diet: Front-End Web Performance
 
The Anatomy Of A Hack - WordCamp Sofia 2018
The Anatomy Of A Hack - WordCamp Sofia 2018The Anatomy Of A Hack - WordCamp Sofia 2018
The Anatomy Of A Hack - WordCamp Sofia 2018
 
Web前端性能优化 2014
Web前端性能优化 2014Web前端性能优化 2014
Web前端性能优化 2014
 
Don't Fear the Walking Dead @ PHPUGHH
Don't Fear the Walking Dead @ PHPUGHHDon't Fear the Walking Dead @ PHPUGHH
Don't Fear the Walking Dead @ PHPUGHH
 
(WEB305) Migrating Your Website to AWS | AWS re:Invent 2014
(WEB305) Migrating Your Website to AWS | AWS re:Invent 2014(WEB305) Migrating Your Website to AWS | AWS re:Invent 2014
(WEB305) Migrating Your Website to AWS | AWS re:Invent 2014
 
99% is not enough
99% is not enough99% is not enough
99% is not enough
 
Rest services caching
Rest services cachingRest services caching
Rest services caching
 
Inside election night at The New York Times | Altitude NYC
Inside election night at The New York Times | Altitude NYCInside election night at The New York Times | Altitude NYC
Inside election night at The New York Times | Altitude NYC
 
109. Arquitecturas Escalables con GX
109. Arquitecturas Escalables con GX109. Arquitecturas Escalables con GX
109. Arquitecturas Escalables con GX
 
Less and faster – Cache tips for WordPress developers
Less and faster – Cache tips for WordPress developersLess and faster – Cache tips for WordPress developers
Less and faster – Cache tips for WordPress developers
 
Csp and http headers
Csp and http headersCsp and http headers
Csp and http headers
 
Doc or Die
Doc or DieDoc or Die
Doc or Die
 
Demystifying HTML5
Demystifying HTML5Demystifying HTML5
Demystifying HTML5
 

Ähnlich wie AtlasCamp 2014: Static Connect Add-ons

High Performance Web Pages - 20 new best practices
High Performance Web Pages - 20 new best practicesHigh Performance Web Pages - 20 new best practices
High Performance Web Pages - 20 new best practices
Stoyan Stefanov
 
HTML5 vs Silverlight
HTML5 vs SilverlightHTML5 vs Silverlight
HTML5 vs Silverlight
Matt Casto
 
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
Patrick Lauke
 
Web app and more
Web app and moreWeb app and more
Web app and more
faming su
 

Ähnlich wie AtlasCamp 2014: Static Connect Add-ons (20)

Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
Beyond Cookies, Persistent Storage For Web Applications Web Directions North ...
 
HTML5와 모바일
HTML5와 모바일HTML5와 모바일
HTML5와 모바일
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
Cross Site Scripting (XSS) Defense with Java
Cross Site Scripting (XSS) Defense with JavaCross Site Scripting (XSS) Defense with Java
Cross Site Scripting (XSS) Defense with Java
 
High Performance Web Pages - 20 new best practices
High Performance Web Pages - 20 new best practicesHigh Performance Web Pages - 20 new best practices
High Performance Web Pages - 20 new best practices
 
HTML5 for Rich User Experience
HTML5 for Rich User ExperienceHTML5 for Rich User Experience
HTML5 for Rich User Experience
 
HTML5 vs Silverlight
HTML5 vs SilverlightHTML5 vs Silverlight
HTML5 vs Silverlight
 
Cape Cod Web Technology Meetup - 2
Cape Cod Web Technology Meetup - 2Cape Cod Web Technology Meetup - 2
Cape Cod Web Technology Meetup - 2
 
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
 
HDInsight for Architects
HDInsight for ArchitectsHDInsight for Architects
HDInsight for Architects
 
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET DevelopersAccelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
Accelerated Adoption: HTML5 and CSS3 for ASP.NET Developers
 
Continuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWSContinuous Integration and Deployment Best Practices on AWS
Continuous Integration and Deployment Best Practices on AWS
 
Google Gears
Google GearsGoogle Gears
Google Gears
 
WebSockets with Spring 4
WebSockets with Spring 4WebSockets with Spring 4
WebSockets with Spring 4
 
Ext Js
Ext JsExt Js
Ext Js
 
Ajax to the Moon
Ajax to the MoonAjax to the Moon
Ajax to the Moon
 
HTML5 Hacking - Yahoo! Open Hack Day
HTML5 Hacking - Yahoo! Open Hack DayHTML5 Hacking - Yahoo! Open Hack Day
HTML5 Hacking - Yahoo! Open Hack Day
 
Client Side Storage
Client Side StorageClient Side Storage
Client Side Storage
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
 
Web app and more
Web app and moreWeb app and more
Web app and more
 

Mehr von Atlassian

Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
Atlassian
 

Mehr von Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

Kürzlich hochgeladen

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
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
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
 
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
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
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...
 
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
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 

AtlasCamp 2014: Static Connect Add-ons