SlideShare une entreprise Scribd logo
1  sur  63
Télécharger pour lire hors ligne
@atlassian #atlascamp
Modernizing Your
Plugin UI
Jonathon Creenaune, Front End Architect, Atlassian
Build more features
Build more features
Make features better
Make features better
Beauty
Beauty
Interactivity
Beauty
AUI
<header class="aui-page-header">
  <div class="aui-page-header-inner">
    my header text
  </div>
</header>
Side-by-side
<header class="aui-page-header">
  <div class="aui-page-header-inner">
    my header text
  </div>
</header>
Side-by-side
<header class="aui-page-header">

{call aui.page.pageHeader}

  <div class="aui-page-header-inner">

  {param content}

    my header text

    my header text

  </div>

  {/param}

</header>

{/call}
AUI 5.0 is in
JIRA 6.0
Confluence 5.0
Bamboo 4.3
Stash 2.0
FE/CRU 3.0
Targeting non-soy
platforms
“ not just a side-effect of the technology
you used to create a page
”
URLs should be designed for the user,
/secure/MemeAction.jspa
/plugins/servlet/memes
/memes

/secure/MemeAction.jspa

/memes/{x}

/secure/MemeAction.jspa?key={x}

/memes/create/

=>

/secure/MemeAction.jspa?upload=

/memes/create/{x}

/secure/MemeAction.jspa?createBaseImageKey={x}

/memes/create

/secure/MemeAction.jspa?create=
Pretty URLs
<routing key="meme-pretty-urls" path="/memes">
<get from="" to="/secure/MemeAction.jspa"/>
<get from="/create/" to="/secure/MemeAction.jspa?upload="/>
<get from="/create/{key}" to="/secure/MemeAction.jspa?
createBaseImageKey={key}"/>
<get from="/create" to="/secure/MemeAction.jspa?create="/>
<get from="/{key}" to="/secure/MemeAction.jspa?key={key}"/>
</routing>
Pretty URLs
P2: Yes
Old products: Yes
Connect: Yes
Interactivity
Getting code closer to the user
Pushstate
history.pushState(stateObject, title, url);
// Using history.js
History.pushState(null, null, url);
Pushstate
gallery.onSelectImage(function(key) {
// Add it to the URL
History.pushState(null, null, AJS.contextPath() + “/memes” +
key);
// Load the hero image
hero.load($container, key);
});
Pushstate - back / forward
History.Adapter.bind(window, 'statechange', function() {
var match;
if (match = getUrl().match(/^$/)) { // gallery
gallery.load($container);
}
else if (match = getUrl().match(/^/(.*)$/)) { // hero
hero.load($container, match[1]);
}
});
Pushstate
P2: Yes
Old products: Yes
Connect: Yes
Soy renders on server
and on client
Render on server
<webwork1 key="meme-webwork" class="java.lang.Object">
<actions>
<action name="com.atlassian.meme.action.MemeAction" ...>
<view name="hero" type="soy">
:server-templates/meme.page.hero
</view>
<view name="gallery" type="soy">
:server-templates/meme.page.gallery
</view>
...
Render on server
$(function() {
var $container = getContainer();
hero.initEvents($container);
});
Render on client
<web-resource key="hero">
<transformation extension="soy">
<transformer key="soyTransformer" />
</transformation>
<resource type="download" name="hero.js" location="hero.soy"/>
...
Render on client
function render($container, key) {
$.get(getMemeUrl(key)).done(function(memeData) {
$container.html(meme.hero.main({
meme: memeData
}));
initEvents($container);
...
Render on client + server
P2: Yes
Old products: If soy available
Connect: JVM server
Injecting Page Data
// Bad
<script>
var myData = “${getMyData}”;
</script>
// Why? Because it’s an XSS hole
<script>
var myData = “</script><script>alert(‘naughty’);””;
</script>
Injecting Page Data
// In action
public String getSelectData() {
return ImmutableMap.of(
“baseImages”, getAllBaseImages(),
“baseImagesJson”, marshalAsJson(getAllBaseImages())
);
}
Injecting Page Data
// In template
<div class="base-images-json"
data-base-images-json="{$baseImagesJson}">
</div>
Accessing Page Data
// From javascript
var myData = AJS.$(".base-images-json").
data("base-images-json");
Page Data
P2: Yes
Old products: Yes
Connect: Yes
Future ...
Injecting Page Data
<web-resource key="blah">
  <data name="my-data" provider="com.acme.MyDataProvider" />
  <resource type="download" name="my-code.js" />
</web-resource>
Injecting Page Data
// pageBuilderService is injectable
pageBuilderService.getData().set("my-data-key", myJsonable);
Accessing Page Data
var data = AJS.data.get("my-plugin:blah:my-data");
Gallery

Hero
Main

Select
Create

Read files
Form

Utils

Render Meme
Defining Modules
define(“create/canvasDrawer”, function() {
...
return {
drawImage: function() {},
drawText: function() {},
getAsBase64: function() {}
}
});
Requiring Modules
define(“create/main”, [“./formView”, “./canvasDrawer”],
function(formView, canvasDrawer) {
formView.onSubmit(function() {
canvasDrawer.drawImage(myImage);
save(canvasDrawer.getAsBase64);
});
});
almond.js
JS modules
P2: Yes
Old products: Yes
Connect: Yes
“

Amazon: For every 100ms increase in load time
of Amazon.com decreased sales by 1%
Google: From 10 results in 0.4 seconds to to 30
results in 0.9 seconds decreased traffic and ad
revenues by 20%
Google: An extra 500ms in loading time
resulted in 20% drop in traffic.
Yahoo: 400ms slower page would see 5-9% more
people leave before the page finished loading.

”
Gallery

Hero
Main

Select
Create

Read Files
Form

Utils

Render Meme
Gallery

Hero
Main

Select
Create

Read Files
Form

Utils

Render Meme
Async Resource Loading
<web-resource key="create">
<resource type="download" name="create/main.js"
location="create/main.js" />
<resource type="download" name="create/create.css"
location="create/create.css" />
<resource type="download" name="create/create.js"
location="create/create.soy" />
...
</web-resource>
Async Resource Loading
require("gallery/main").onSelectCreate(function() {
WRM.require([
"wr!com.atlassian.atlassian-meme-generator:create"
]).done(function() {
showCreateView();
});
});
Async Resource Loading
P2: Yes
Old products: Yes
Connect: Other libs
Beauty:
Soy
Pretty URLs
Interactivity:
Pushstate
Server and Client rendering
Data
JS modules
Async resource loading
Sample App:
http://bitbucket.org/jcreenaune/atlassian-memegenerator

AUI Debugger:
http://bit.ly/10DXYlG
Thank you!
Party Starts at 19.00!
SkyLounge, Oosterdoksstraat 4, 11th Floor

Contenu connexe

Tendances

PrimeTime JSF with PrimeFaces - Dec 2014
PrimeTime JSF with PrimeFaces - Dec 2014PrimeTime JSF with PrimeFaces - Dec 2014
PrimeTime JSF with PrimeFaces - Dec 2014cagataycivici
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012crokitta
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5Tieturi Oy
 
Drupal as a web framework
Drupal as a web frameworkDrupal as a web framework
Drupal as a web frameworkAdam Kalsey
 
Ajax, JSF, Facelets, Eclipse & Maven tutorials
Ajax, JSF, Facelets, Eclipse & Maven tutorialsAjax, JSF, Facelets, Eclipse & Maven tutorials
Ajax, JSF, Facelets, Eclipse & Maven tutorialsRaghavan Mohan
 
Templates
TemplatesTemplates
Templatessoon
 
Java - Persist and Replay Runtime Data
Java - Persist and Replay Runtime Data Java - Persist and Replay Runtime Data
Java - Persist and Replay Runtime Data Ajay Singh
 
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...Shift Conference
 
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App EngineJava Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App EngineIMC Institute
 
netmind - Primer Contacto con el Desarrollo de Aplicaciones para Windows 8
netmind - Primer Contacto con el Desarrollo de Aplicaciones para Windows 8netmind - Primer Contacto con el Desarrollo de Aplicaciones para Windows 8
netmind - Primer Contacto con el Desarrollo de Aplicaciones para Windows 8netmind
 
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...Atlassian
 
RESS – Responsive Webdesign and Server Side Components
RESS – Responsive Webdesign and Server Side ComponentsRESS – Responsive Webdesign and Server Side Components
RESS – Responsive Webdesign and Server Side ComponentsSven Wolfermann
 
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...Atlassian
 
Javascript Frameworks for Well Architected, Immersive Web Apps
Javascript Frameworks for Well Architected, Immersive Web AppsJavascript Frameworks for Well Architected, Immersive Web Apps
Javascript Frameworks for Well Architected, Immersive Web Appsdnelson-cs
 
Bootstrap 3 Cheat Sheet PDF Reference
Bootstrap 3 Cheat Sheet PDF ReferenceBootstrap 3 Cheat Sheet PDF Reference
Bootstrap 3 Cheat Sheet PDF ReferenceBootstrap Creative
 
jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5Todd Anderson
 

Tendances (20)

PrimeTime JSF with PrimeFaces - Dec 2014
PrimeTime JSF with PrimeFaces - Dec 2014PrimeTime JSF with PrimeFaces - Dec 2014
PrimeTime JSF with PrimeFaces - Dec 2014
 
Pom
PomPom
Pom
 
Articulo java web
Articulo java webArticulo java web
Articulo java web
 
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
Oracle Application Express & jQuery Mobile - OGh Apex Dag 2012
 
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5TechDays 2013 Jari Kallonen: What's New WebForms 4.5
TechDays 2013 Jari Kallonen: What's New WebForms 4.5
 
Drupal as a web framework
Drupal as a web frameworkDrupal as a web framework
Drupal as a web framework
 
Ajax, JSF, Facelets, Eclipse & Maven tutorials
Ajax, JSF, Facelets, Eclipse & Maven tutorialsAjax, JSF, Facelets, Eclipse & Maven tutorials
Ajax, JSF, Facelets, Eclipse & Maven tutorials
 
Templates
TemplatesTemplates
Templates
 
Mobile themes, QR codes, and shortURLs
Mobile themes, QR codes, and shortURLsMobile themes, QR codes, and shortURLs
Mobile themes, QR codes, and shortURLs
 
Java - Persist and Replay Runtime Data
Java - Persist and Replay Runtime Data Java - Persist and Replay Runtime Data
Java - Persist and Replay Runtime Data
 
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...
More Than You Ever Wanted to Know About Resource Hints - Harry Roberts (CSS W...
 
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App EngineJava Web Programming on Google Cloud Platform [1/3] : Google App Engine
Java Web Programming on Google Cloud Platform [1/3] : Google App Engine
 
netmind - Primer Contacto con el Desarrollo de Aplicaciones para Windows 8
netmind - Primer Contacto con el Desarrollo de Aplicaciones para Windows 8netmind - Primer Contacto con el Desarrollo de Aplicaciones para Windows 8
netmind - Primer Contacto con el Desarrollo de Aplicaciones para Windows 8
 
AspNetWhitePaper
AspNetWhitePaperAspNetWhitePaper
AspNetWhitePaper
 
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian ...
 
RESS – Responsive Webdesign and Server Side Components
RESS – Responsive Webdesign and Server Side ComponentsRESS – Responsive Webdesign and Server Side Components
RESS – Responsive Webdesign and Server Side Components
 
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
No Coding Necessary: Building User Macros and Dynamic Reports Inside Confluen...
 
Javascript Frameworks for Well Architected, Immersive Web Apps
Javascript Frameworks for Well Architected, Immersive Web AppsJavascript Frameworks for Well Architected, Immersive Web Apps
Javascript Frameworks for Well Architected, Immersive Web Apps
 
Bootstrap 3 Cheat Sheet PDF Reference
Bootstrap 3 Cheat Sheet PDF ReferenceBootstrap 3 Cheat Sheet PDF Reference
Bootstrap 3 Cheat Sheet PDF Reference
 
jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5jQuery Mobile: Progressive Enhancement with HTML5
jQuery Mobile: Progressive Enhancement with HTML5
 

Similaire à AtlasCamp 2013: Modernizing your Plugin UI

AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkara JUG
 
Auto tools
Auto toolsAuto tools
Auto tools祺 周
 
FamilySearch Reference Client
FamilySearch Reference ClientFamilySearch Reference Client
FamilySearch Reference ClientDallan Quass
 
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoRob Bontekoe
 
Vue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerVue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerKaty Slemon
 
The things browsers can do! SAE Alumni Convention 2014
The things browsers can do! SAE Alumni Convention 2014The things browsers can do! SAE Alumni Convention 2014
The things browsers can do! SAE Alumni Convention 2014Christian Heilmann
 
Rapid HTML Prototyping with Bootstrap - Chris Griffith
Rapid HTML Prototyping with Bootstrap - Chris GriffithRapid HTML Prototyping with Bootstrap - Chris Griffith
Rapid HTML Prototyping with Bootstrap - Chris GriffithUXPA International
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and ImprovedTimothy Fisher
 
The Future of CSS with Web components
The Future of CSS with Web componentsThe Future of CSS with Web components
The Future of CSS with Web componentsdevObjective
 
The Future of CSS with Web Components
The Future of CSS with Web ComponentsThe Future of CSS with Web Components
The Future of CSS with Web ComponentsColdFusionConference
 
Creating GUI container components in Angular and Web Components
Creating GUI container components in Angular and Web ComponentsCreating GUI container components in Angular and Web Components
Creating GUI container components in Angular and Web ComponentsRachael L Moore
 
Yes, browsers can do that! Hybrid and future web meetup at Jayway
Yes, browsers can do that! Hybrid and future web meetup at JaywayYes, browsers can do that! Hybrid and future web meetup at Jayway
Yes, browsers can do that! Hybrid and future web meetup at JaywayChristian Heilmann
 
E2 appspresso hands on lab
E2 appspresso hands on labE2 appspresso hands on lab
E2 appspresso hands on labNAVER D2
 
E3 appspresso hands on lab
E3 appspresso hands on labE3 appspresso hands on lab
E3 appspresso hands on labNAVER D2
 
HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2James Pearce
 
Enjoy the vue.js
Enjoy the vue.jsEnjoy the vue.js
Enjoy the vue.jsTechExeter
 

Similaire à AtlasCamp 2013: Modernizing your Plugin UI (20)

iWebkit
iWebkitiWebkit
iWebkit
 
AnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFacesAnkaraJUG Kasım 2012 - PrimeFaces
AnkaraJUG Kasım 2012 - PrimeFaces
 
Auto tools
Auto toolsAuto tools
Auto tools
 
Flask – Python
Flask – PythonFlask – Python
Flask – Python
 
FamilySearch Reference Client
FamilySearch Reference ClientFamilySearch Reference Client
FamilySearch Reference Client
 
Building iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" DominoBuilding iPhone Web Apps using "classic" Domino
Building iPhone Web Apps using "classic" Domino
 
Vue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue routerVue routing tutorial getting started with vue router
Vue routing tutorial getting started with vue router
 
The things browsers can do! SAE Alumni Convention 2014
The things browsers can do! SAE Alumni Convention 2014The things browsers can do! SAE Alumni Convention 2014
The things browsers can do! SAE Alumni Convention 2014
 
Rapid HTML Prototyping with Bootstrap - Chris Griffith
Rapid HTML Prototyping with Bootstrap - Chris GriffithRapid HTML Prototyping with Bootstrap - Chris Griffith
Rapid HTML Prototyping with Bootstrap - Chris Griffith
 
HTML5 New and Improved
HTML5   New and ImprovedHTML5   New and Improved
HTML5 New and Improved
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
JSP
JSPJSP
JSP
 
The Future of CSS with Web components
The Future of CSS with Web componentsThe Future of CSS with Web components
The Future of CSS with Web components
 
The Future of CSS with Web Components
The Future of CSS with Web ComponentsThe Future of CSS with Web Components
The Future of CSS with Web Components
 
Creating GUI container components in Angular and Web Components
Creating GUI container components in Angular and Web ComponentsCreating GUI container components in Angular and Web Components
Creating GUI container components in Angular and Web Components
 
Yes, browsers can do that! Hybrid and future web meetup at Jayway
Yes, browsers can do that! Hybrid and future web meetup at JaywayYes, browsers can do that! Hybrid and future web meetup at Jayway
Yes, browsers can do that! Hybrid and future web meetup at Jayway
 
E2 appspresso hands on lab
E2 appspresso hands on labE2 appspresso hands on lab
E2 appspresso hands on lab
 
E3 appspresso hands on lab
E3 appspresso hands on labE3 appspresso hands on lab
E3 appspresso hands on lab
 
HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2HTML5 and the dawn of rich mobile web applications pt 2
HTML5 and the dawn of rich mobile web applications pt 2
 
Enjoy the vue.js
Enjoy the vue.jsEnjoy the vue.js
Enjoy the vue.js
 

Plus de colleenfry

The 7 habits of high successful atlassian marketplace developers
The 7 habits of high successful atlassian marketplace developers The 7 habits of high successful atlassian marketplace developers
The 7 habits of high successful atlassian marketplace developers colleenfry
 
The 7 habits of high successful atlassian marketplace developers
The 7 habits of high successful atlassian marketplace developers The 7 habits of high successful atlassian marketplace developers
The 7 habits of high successful atlassian marketplace developers colleenfry
 
The 7 habits of high successful atlassian marketplace developers by dave meyer
The 7 habits of high successful atlassian marketplace developers   by dave meyerThe 7 habits of high successful atlassian marketplace developers   by dave meyer
The 7 habits of high successful atlassian marketplace developers by dave meyercolleenfry
 
AtlasCamp 2013: Scratch your own itch
AtlasCamp 2013: Scratch your own itch AtlasCamp 2013: Scratch your own itch
AtlasCamp 2013: Scratch your own itch colleenfry
 
AtlasCamp 2013: Bring your own Stack
AtlasCamp 2013: Bring your own Stack AtlasCamp 2013: Bring your own Stack
AtlasCamp 2013: Bring your own Stack colleenfry
 
AtlasCamp 2013: A Re-Intriduction to Atlassian Connect: Add-ons for OnDemand
AtlasCamp 2013: A Re-Intriduction to Atlassian Connect: Add-ons for OnDemandAtlasCamp 2013: A Re-Intriduction to Atlassian Connect: Add-ons for OnDemand
AtlasCamp 2013: A Re-Intriduction to Atlassian Connect: Add-ons for OnDemandcolleenfry
 
AtlasCamp 2013: Keynote
AtlasCamp 2013: Keynote AtlasCamp 2013: Keynote
AtlasCamp 2013: Keynote colleenfry
 
AtlasCamp 2013: Confluence patterns
AtlasCamp 2013: Confluence patternsAtlasCamp 2013: Confluence patterns
AtlasCamp 2013: Confluence patternscolleenfry
 
AtlasCamp 2013: Confluence Blueprints
AtlasCamp 2013: Confluence Blueprints AtlasCamp 2013: Confluence Blueprints
AtlasCamp 2013: Confluence Blueprints colleenfry
 
AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing
AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing
AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing colleenfry
 
AtlasCamp 2013: Confluence State of the Union
AtlasCamp 2013: Confluence State of the Union AtlasCamp 2013: Confluence State of the Union
AtlasCamp 2013: Confluence State of the Union colleenfry
 
AtlasCamp 2013: ADG / Lean UX
AtlasCamp 2013: ADG / Lean UXAtlasCamp 2013: ADG / Lean UX
AtlasCamp 2013: ADG / Lean UXcolleenfry
 
Atlassian Summit 2013: Confluence State of the Union
Atlassian Summit 2013: Confluence State of the Union Atlassian Summit 2013: Confluence State of the Union
Atlassian Summit 2013: Confluence State of the Union colleenfry
 
Atlassian: More Awesome with Add-ons
Atlassian: More Awesome with Add-onsAtlassian: More Awesome with Add-ons
Atlassian: More Awesome with Add-onscolleenfry
 
Flying at the Speed of Git
Flying at the Speed of GitFlying at the Speed of Git
Flying at the Speed of Gitcolleenfry
 
The Experience Canvas: How to Use a Core Tool from the Experience-Driven Play...
The Experience Canvas: How to Use a Core Tool from the Experience-Driven Play...The Experience Canvas: How to Use a Core Tool from the Experience-Driven Play...
The Experience Canvas: How to Use a Core Tool from the Experience-Driven Play...colleenfry
 
True Git: The Great Migration
True Git: The Great MigrationTrue Git: The Great Migration
True Git: The Great Migrationcolleenfry
 
Adopting Continuous Integration in an Ops Group
Adopting Continuous Integration in an Ops GroupAdopting Continuous Integration in an Ops Group
Adopting Continuous Integration in an Ops Groupcolleenfry
 
W4 0245 agility_v1
W4 0245 agility_v1W4 0245 agility_v1
W4 0245 agility_v1colleenfry
 

Plus de colleenfry (20)

The 7 habits of high successful atlassian marketplace developers
The 7 habits of high successful atlassian marketplace developers The 7 habits of high successful atlassian marketplace developers
The 7 habits of high successful atlassian marketplace developers
 
True Git
True Git True Git
True Git
 
The 7 habits of high successful atlassian marketplace developers
The 7 habits of high successful atlassian marketplace developers The 7 habits of high successful atlassian marketplace developers
The 7 habits of high successful atlassian marketplace developers
 
The 7 habits of high successful atlassian marketplace developers by dave meyer
The 7 habits of high successful atlassian marketplace developers   by dave meyerThe 7 habits of high successful atlassian marketplace developers   by dave meyer
The 7 habits of high successful atlassian marketplace developers by dave meyer
 
AtlasCamp 2013: Scratch your own itch
AtlasCamp 2013: Scratch your own itch AtlasCamp 2013: Scratch your own itch
AtlasCamp 2013: Scratch your own itch
 
AtlasCamp 2013: Bring your own Stack
AtlasCamp 2013: Bring your own Stack AtlasCamp 2013: Bring your own Stack
AtlasCamp 2013: Bring your own Stack
 
AtlasCamp 2013: A Re-Intriduction to Atlassian Connect: Add-ons for OnDemand
AtlasCamp 2013: A Re-Intriduction to Atlassian Connect: Add-ons for OnDemandAtlasCamp 2013: A Re-Intriduction to Atlassian Connect: Add-ons for OnDemand
AtlasCamp 2013: A Re-Intriduction to Atlassian Connect: Add-ons for OnDemand
 
AtlasCamp 2013: Keynote
AtlasCamp 2013: Keynote AtlasCamp 2013: Keynote
AtlasCamp 2013: Keynote
 
AtlasCamp 2013: Confluence patterns
AtlasCamp 2013: Confluence patternsAtlasCamp 2013: Confluence patterns
AtlasCamp 2013: Confluence patterns
 
AtlasCamp 2013: Confluence Blueprints
AtlasCamp 2013: Confluence Blueprints AtlasCamp 2013: Confluence Blueprints
AtlasCamp 2013: Confluence Blueprints
 
AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing
AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing
AtlasCamp 2013: Show Me Number! Automated Browser Performance Testing
 
AtlasCamp 2013: Confluence State of the Union
AtlasCamp 2013: Confluence State of the Union AtlasCamp 2013: Confluence State of the Union
AtlasCamp 2013: Confluence State of the Union
 
AtlasCamp 2013: ADG / Lean UX
AtlasCamp 2013: ADG / Lean UXAtlasCamp 2013: ADG / Lean UX
AtlasCamp 2013: ADG / Lean UX
 
Atlassian Summit 2013: Confluence State of the Union
Atlassian Summit 2013: Confluence State of the Union Atlassian Summit 2013: Confluence State of the Union
Atlassian Summit 2013: Confluence State of the Union
 
Atlassian: More Awesome with Add-ons
Atlassian: More Awesome with Add-onsAtlassian: More Awesome with Add-ons
Atlassian: More Awesome with Add-ons
 
Flying at the Speed of Git
Flying at the Speed of GitFlying at the Speed of Git
Flying at the Speed of Git
 
The Experience Canvas: How to Use a Core Tool from the Experience-Driven Play...
The Experience Canvas: How to Use a Core Tool from the Experience-Driven Play...The Experience Canvas: How to Use a Core Tool from the Experience-Driven Play...
The Experience Canvas: How to Use a Core Tool from the Experience-Driven Play...
 
True Git: The Great Migration
True Git: The Great MigrationTrue Git: The Great Migration
True Git: The Great Migration
 
Adopting Continuous Integration in an Ops Group
Adopting Continuous Integration in an Ops GroupAdopting Continuous Integration in an Ops Group
Adopting Continuous Integration in an Ops Group
 
W4 0245 agility_v1
W4 0245 agility_v1W4 0245 agility_v1
W4 0245 agility_v1
 

Dernier

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 DevelopmentsTrustArc
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
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...apidays
 
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.pdfsudhanshuwaghmare1
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
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 Scriptwesley chun
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
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 FresherRemote DBA Services
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
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 2024The Digital Insurer
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Dernier (20)

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
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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...
 
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
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
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
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
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
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
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
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

AtlasCamp 2013: Modernizing your Plugin UI