SlideShare a Scribd company logo
1 of 18
myBalsamiq


   Luis Arias
     balsamiq
What we'll look at today

  What's Balsamiq and what do we do
  myBalsamiq a different beast in our product line
  Let's do a demo
  So how does myBalsamiq work ?
  Towards myBalsamiq 2.0
  Some community contributions
GR8Conf 2011: myBalsamiq
myBalsamiq - A different beast

  Always on
  Support thousands of users
  New technology
  New deployment model
  New people
  New business model
Demo Time!
Some cool facts

 First commit Jan 2009 (mvn archetype !)
 Some 4000+ commits now
 DB changelog has 615 commits
 Started on grails version 1.1, now on 1.3.7
 Started on flexsdk 3.1.0.2710, now on custom 3.5.0.12683
 Currently in gamma (invitation only, some 50 customers)
 Runs on Amazon EC2, RDS, moving to clustered tomcat
 Launch if everything's ready in June on Balsamiq's third
 birthday
So how does myBalsamiq work ?
A more detailed view
Main Plugins

 feeds
 jdbc-pool
 liquibase
 mail
 pretty-size
 pretty-time
 quartz
 sanitizer
 shiro
 spreedly
 ui-performance
 wordpress
How did Grails make a difference ?

  Provides the flexibility we need so we can focus on our first
  priority : user experience
  Liquibase provides essential database refactoring capability
  Provides the right tools for integration with third party
  services (plugins, services, taglibs, commands)
  Groovy language close to javascript, action script
Towards myBalsamiq 2.0

 Third party API clients
 Virtual private myBalsamiq instances
 Private databases
 Mockups Desktop Pro interoperability
 Improved collaborative features
 Alternative datastores / caches
Community Contributions

 Spreedly Plugin
 Beaconpush Plugin
 Wordpress Plugin
Spreedly Plugin

 Let spreedly deal with subscriptions for your service
 SpreedlyService maps to Spreedly REST API ()
    createSubscriber
    findAllSubscriptionPlans
    giveComplementarySubscription
    ...
 SpreedlyTagLib provides important links
    Allow your users to choose a plan for your service
    Allow your users to update their credit card info
 Spreedly API Guide : http://www.spreedly.
 com/info/integration
Beaconpush Plugin

 Provides a js event push model on top of beaconpush.com's
 real-time push service
 Works on SSL
 BeaconpushService
    PostToChannel
    PostToUser
    Mockup, Project and Site events
         Created
         Deleted
         Renamed
         Saved
         ...
Beaconpush Example
Mockup is renamed:


def beaconpushService
beaconpushService.mockupRenamed(mockup, user)


On the client:

$(document).bind('Renamed.Mockup', function(event) {
$('mockup-name').html(event.name);
}
Wordpress Plugin

 Use wordpress as a backend web content editor
 Caches content in in-memory HSQLdb instance
 Refreshes periodically
 Provides domain model
    Category
    Comment
    Page
    Post
    Tag
    User
 Provides Service and Tag Lib
Wordpress Plugin Example

Displaying content from a wordpress page:

def wordpressService

def page = {
  [page: wordpressService.getPage(params.long('id'))]
}
To go further

  Balsamiq Web Site
     http://www.balsamiq.com
  Spreedly Integration Guide
     http://www.spreedly.com/info/integration
  Beaconpush Developer's Guide
     http://beaconpush.com/guide
  Sendgrid API Documentation
      http://sendgrid.com/documentation/api
  Amazon Web Services
     http://aws.amazon.com/

More Related Content

What's hot

10 things I’ve learnt In the clouds
10 things I’ve learnt In the clouds10 things I’ve learnt In the clouds
10 things I’ve learnt In the cloudsStuart Lodge
 
Data Engineer's Lunch #23: Thanos/Cortex
Data Engineer's Lunch #23: Thanos/CortexData Engineer's Lunch #23: Thanos/Cortex
Data Engineer's Lunch #23: Thanos/CortexAnant Corporation
 
Deploying Your Favorite Web App To AWS Lambda with Apex up
Deploying Your Favorite Web App To AWS Lambda with Apex upDeploying Your Favorite Web App To AWS Lambda with Apex up
Deploying Your Favorite Web App To AWS Lambda with Apex upRiza Fahmi
 
Canopy view of single-page applications (SPAs)
Canopy view of single-page applications (SPAs)Canopy view of single-page applications (SPAs)
Canopy view of single-page applications (SPAs)Benjamin Howarth
 
Building a modern application using Symfony API Platform and GatsbyJS PHP QRO
Building a modern application using  Symfony API Platform and GatsbyJS PHP QROBuilding a modern application using  Symfony API Platform and GatsbyJS PHP QRO
Building a modern application using Symfony API Platform and GatsbyJS PHP QROJesus Manuel Olivas
 
A High-Performance Solution to Microservice UI Composition @ XConf Hamburg
A High-Performance Solution to Microservice UI Composition @ XConf HamburgA High-Performance Solution to Microservice UI Composition @ XConf Hamburg
A High-Performance Solution to Microservice UI Composition @ XConf HamburgDr. Arif Wider
 
Better content presentation
Better content presentationBetter content presentation
Better content presentationgardenofwine
 
Better Content Presentation
Better Content PresentationBetter Content Presentation
Better Content Presentationgardenofwine
 
Serverless Architecture - introduction + AWS demo
Serverless Architecture - introduction + AWS demoServerless Architecture - introduction + AWS demo
Serverless Architecture - introduction + AWS demoJan van Zoggel
 
Server rendering-talk
Server rendering-talkServer rendering-talk
Server rendering-talkDaiwei Lu
 
Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)Gustaf Nilsson Kotte
 
Managing your camels in the cloud with CI/CD
Managing your camels in the cloud with CI/CDManaging your camels in the cloud with CI/CD
Managing your camels in the cloud with CI/CDChristian Posta
 
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...Weaveworks
 
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShiftReal-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShiftChristian Posta
 

What's hot (20)

10 things I’ve learnt In the clouds
10 things I’ve learnt In the clouds10 things I’ve learnt In the clouds
10 things I’ve learnt In the clouds
 
Data Engineer's Lunch #23: Thanos/Cortex
Data Engineer's Lunch #23: Thanos/CortexData Engineer's Lunch #23: Thanos/Cortex
Data Engineer's Lunch #23: Thanos/Cortex
 
What is new in ASP.NET Core
What is new in ASP.NET CoreWhat is new in ASP.NET Core
What is new in ASP.NET Core
 
Deploying Your Favorite Web App To AWS Lambda with Apex up
Deploying Your Favorite Web App To AWS Lambda with Apex upDeploying Your Favorite Web App To AWS Lambda with Apex up
Deploying Your Favorite Web App To AWS Lambda with Apex up
 
LoopbackJS the intro
LoopbackJS the introLoopbackJS the intro
LoopbackJS the intro
 
Canopy view of single-page applications (SPAs)
Canopy view of single-page applications (SPAs)Canopy view of single-page applications (SPAs)
Canopy view of single-page applications (SPAs)
 
Compress
CompressCompress
Compress
 
Building a modern application using Symfony API Platform and GatsbyJS PHP QRO
Building a modern application using  Symfony API Platform and GatsbyJS PHP QROBuilding a modern application using  Symfony API Platform and GatsbyJS PHP QRO
Building a modern application using Symfony API Platform and GatsbyJS PHP QRO
 
A High-Performance Solution to Microservice UI Composition @ XConf Hamburg
A High-Performance Solution to Microservice UI Composition @ XConf HamburgA High-Performance Solution to Microservice UI Composition @ XConf Hamburg
A High-Performance Solution to Microservice UI Composition @ XConf Hamburg
 
Jayway Web Tech Radar 2015
Jayway Web Tech Radar 2015Jayway Web Tech Radar 2015
Jayway Web Tech Radar 2015
 
Angular js anupama
Angular js anupamaAngular js anupama
Angular js anupama
 
Better content presentation
Better content presentationBetter content presentation
Better content presentation
 
Better Content Presentation
Better Content PresentationBetter Content Presentation
Better Content Presentation
 
Serverless Architecture - introduction + AWS demo
Serverless Architecture - introduction + AWS demoServerless Architecture - introduction + AWS demo
Serverless Architecture - introduction + AWS demo
 
Server rendering-talk
Server rendering-talkServer rendering-talk
Server rendering-talk
 
Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)Simpler Web Architectures Now! (At The Frontend 2016)
Simpler Web Architectures Now! (At The Frontend 2016)
 
Managing your camels in the cloud with CI/CD
Managing your camels in the cloud with CI/CDManaging your camels in the cloud with CI/CD
Managing your camels in the cloud with CI/CD
 
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...
Project Frankenstein: A multitenant, horizontally scalable Prometheus as a se...
 
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShiftReal-world #microservices with Apache Camel, Fabric8, and OpenShift
Real-world #microservices with Apache Camel, Fabric8, and OpenShift
 
Scala and Lift
Scala and LiftScala and Lift
Scala and Lift
 

Similar to GR8Conf 2011: myBalsamiq

DOs and DONTs on the way to 10M users
DOs and DONTs on the way to 10M usersDOs and DONTs on the way to 10M users
DOs and DONTs on the way to 10M usersYoav Avrahami
 
Microservices architecture: practical aspects
Microservices architecture: practical aspectsMicroservices architecture: practical aspects
Microservices architecture: practical aspectsAntonio Sagliocco
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegelermfrancis
 
ServerTemplate Deep Dive
ServerTemplate Deep DiveServerTemplate Deep Dive
ServerTemplate Deep DiveRightScale
 
Serverless Design Patterns
Serverless Design PatternsServerless Design Patterns
Serverless Design PatternsYan Cui
 
Rails in the Cloud
Rails in the CloudRails in the Cloud
Rails in the Cloudiwarshak
 
Serveless design patterns
Serveless design patternsServeless design patterns
Serveless design patternsYan Cui
 
Bringing JAMStack to the Enterprise
Bringing JAMStack to the EnterpriseBringing JAMStack to the Enterprise
Bringing JAMStack to the EnterpriseC4Media
 
Serverless by Example: Building a Real-Time Chat System
Serverless by Example: Building a Real-Time Chat SystemServerless by Example: Building a Real-Time Chat System
Serverless by Example: Building a Real-Time Chat SystemAmazon Web Services
 
Serverless AWS reInvent 2019 recap
Serverless AWS reInvent 2019 recapServerless AWS reInvent 2019 recap
Serverless AWS reInvent 2019 recapDaniel Zivkovic
 
The Future is Now: Leveraging the Cloud with Ruby
The Future is Now: Leveraging the Cloud with RubyThe Future is Now: Leveraging the Cloud with Ruby
The Future is Now: Leveraging the Cloud with RubyRobert Dempsey
 
MLOps with a Feature Store: Filling the Gap in ML Infrastructure
MLOps with a Feature Store: Filling the Gap in ML InfrastructureMLOps with a Feature Store: Filling the Gap in ML Infrastructure
MLOps with a Feature Store: Filling the Gap in ML InfrastructureData Science Milan
 
Extending OpenStack for Fun and Profit
Extending OpenStack for Fun and ProfitExtending OpenStack for Fun and Profit
Extending OpenStack for Fun and Profittsmith416
 
Extending OpenStack for Fun and Profit.pptx
Extending OpenStack for Fun and Profit.pptxExtending OpenStack for Fun and Profit.pptx
Extending OpenStack for Fun and Profit.pptxOpenStack Foundation
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugToshiaki Maki
 
Container Days: Architecting Modern Apps on AWS
Container Days: Architecting Modern Apps on AWSContainer Days: Architecting Modern Apps on AWS
Container Days: Architecting Modern Apps on AWSTara Walker
 
How to build a social network on Serverless (AWS Community Summit)
How to build a social network on Serverless (AWS Community Summit)How to build a social network on Serverless (AWS Community Summit)
How to build a social network on Serverless (AWS Community Summit)Yan Cui
 

Similar to GR8Conf 2011: myBalsamiq (20)

Mashups
MashupsMashups
Mashups
 
DOs and DONTs on the way to 10M users
DOs and DONTs on the way to 10M usersDOs and DONTs on the way to 10M users
DOs and DONTs on the way to 10M users
 
NodeJS @ ACS
NodeJS @ ACSNodeJS @ ACS
NodeJS @ ACS
 
Microservices architecture: practical aspects
Microservices architecture: practical aspectsMicroservices architecture: practical aspects
Microservices architecture: practical aspects
 
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten ZiegelerNew and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
New and cool in OSGi R7 - David Bosschaert & Carsten Ziegeler
 
ServerTemplate Deep Dive
ServerTemplate Deep DiveServerTemplate Deep Dive
ServerTemplate Deep Dive
 
Serverless Design Patterns
Serverless Design PatternsServerless Design Patterns
Serverless Design Patterns
 
Rails in the Cloud
Rails in the CloudRails in the Cloud
Rails in the Cloud
 
Serveless design patterns
Serveless design patternsServeless design patterns
Serveless design patterns
 
Bringing JAMStack to the Enterprise
Bringing JAMStack to the EnterpriseBringing JAMStack to the Enterprise
Bringing JAMStack to the Enterprise
 
Serverless by Example: Building a Real-Time Chat System
Serverless by Example: Building a Real-Time Chat SystemServerless by Example: Building a Real-Time Chat System
Serverless by Example: Building a Real-Time Chat System
 
Serverless computing
Serverless computingServerless computing
Serverless computing
 
Serverless AWS reInvent 2019 recap
Serverless AWS reInvent 2019 recapServerless AWS reInvent 2019 recap
Serverless AWS reInvent 2019 recap
 
The Future is Now: Leveraging the Cloud with Ruby
The Future is Now: Leveraging the Cloud with RubyThe Future is Now: Leveraging the Cloud with Ruby
The Future is Now: Leveraging the Cloud with Ruby
 
MLOps with a Feature Store: Filling the Gap in ML Infrastructure
MLOps with a Feature Store: Filling the Gap in ML InfrastructureMLOps with a Feature Store: Filling the Gap in ML Infrastructure
MLOps with a Feature Store: Filling the Gap in ML Infrastructure
 
Extending OpenStack for Fun and Profit
Extending OpenStack for Fun and ProfitExtending OpenStack for Fun and Profit
Extending OpenStack for Fun and Profit
 
Extending OpenStack for Fun and Profit.pptx
Extending OpenStack for Fun and Profit.pptxExtending OpenStack for Fun and Profit.pptx
Extending OpenStack for Fun and Profit.pptx
 
Spring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsugSpring Cloud Function & Project riff #jsug
Spring Cloud Function & Project riff #jsug
 
Container Days: Architecting Modern Apps on AWS
Container Days: Architecting Modern Apps on AWSContainer Days: Architecting Modern Apps on AWS
Container Days: Architecting Modern Apps on AWS
 
How to build a social network on Serverless (AWS Community Summit)
How to build a social network on Serverless (AWS Community Summit)How to build a social network on Serverless (AWS Community Summit)
How to build a social network on Serverless (AWS Community Summit)
 

More from GR8Conf

DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your TeamGR8Conf
 
Creating and testing REST contracts with Accurest Gradle
Creating and testing REST contracts with Accurest Gradle Creating and testing REST contracts with Accurest Gradle
Creating and testing REST contracts with Accurest Gradle GR8Conf
 
Mum, I want to be a Groovy full-stack developer
Mum, I want to be a Groovy full-stack developerMum, I want to be a Groovy full-stack developer
Mum, I want to be a Groovy full-stack developerGR8Conf
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with GroovyGR8Conf
 
Scraping with Geb
Scraping with GebScraping with Geb
Scraping with GebGR8Conf
 
How to create a conference android app with Groovy and Android
How to create a conference android app with Groovy and AndroidHow to create a conference android app with Groovy and Android
How to create a conference android app with Groovy and AndroidGR8Conf
 
Ratpack On the Docks
Ratpack On the DocksRatpack On the Docks
Ratpack On the DocksGR8Conf
 
Groovy Powered Clean Code
Groovy Powered Clean CodeGroovy Powered Clean Code
Groovy Powered Clean CodeGR8Conf
 
Cut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature pluginsCut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature pluginsGR8Conf
 
Performance tuning Grails applications
 Performance tuning Grails applications Performance tuning Grails applications
Performance tuning Grails applicationsGR8Conf
 
Ratpack and Grails 3
 Ratpack and Grails 3 Ratpack and Grails 3
Ratpack and Grails 3GR8Conf
 
Grails & DevOps: continuous integration and delivery in the cloud
Grails & DevOps: continuous integration and delivery in the cloudGrails & DevOps: continuous integration and delivery in the cloud
Grails & DevOps: continuous integration and delivery in the cloudGR8Conf
 
Functional testing your Grails app with GEB
Functional testing your Grails app with GEBFunctional testing your Grails app with GEB
Functional testing your Grails app with GEBGR8Conf
 
Deploying, Scaling, and Running Grails on AWS and VPC
Deploying, Scaling, and Running Grails on AWS and VPCDeploying, Scaling, and Running Grails on AWS and VPC
Deploying, Scaling, and Running Grails on AWS and VPCGR8Conf
 
The Grails introduction workshop
The Grails introduction workshopThe Grails introduction workshop
The Grails introduction workshopGR8Conf
 
Idiomatic spock
Idiomatic spockIdiomatic spock
Idiomatic spockGR8Conf
 
The Groovy Ecosystem Revisited
The Groovy Ecosystem RevisitedThe Groovy Ecosystem Revisited
The Groovy Ecosystem RevisitedGR8Conf
 
Groovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGroovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGR8Conf
 
Integration using Apache Camel and Groovy
Integration using Apache Camel and GroovyIntegration using Apache Camel and Groovy
Integration using Apache Camel and GroovyGR8Conf
 
CRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual MachineCRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual MachineGR8Conf
 

More from GR8Conf (20)

DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your Team
 
Creating and testing REST contracts with Accurest Gradle
Creating and testing REST contracts with Accurest Gradle Creating and testing REST contracts with Accurest Gradle
Creating and testing REST contracts with Accurest Gradle
 
Mum, I want to be a Groovy full-stack developer
Mum, I want to be a Groovy full-stack developerMum, I want to be a Groovy full-stack developer
Mum, I want to be a Groovy full-stack developer
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with Groovy
 
Scraping with Geb
Scraping with GebScraping with Geb
Scraping with Geb
 
How to create a conference android app with Groovy and Android
How to create a conference android app with Groovy and AndroidHow to create a conference android app with Groovy and Android
How to create a conference android app with Groovy and Android
 
Ratpack On the Docks
Ratpack On the DocksRatpack On the Docks
Ratpack On the Docks
 
Groovy Powered Clean Code
Groovy Powered Clean CodeGroovy Powered Clean Code
Groovy Powered Clean Code
 
Cut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature pluginsCut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature plugins
 
Performance tuning Grails applications
 Performance tuning Grails applications Performance tuning Grails applications
Performance tuning Grails applications
 
Ratpack and Grails 3
 Ratpack and Grails 3 Ratpack and Grails 3
Ratpack and Grails 3
 
Grails & DevOps: continuous integration and delivery in the cloud
Grails & DevOps: continuous integration and delivery in the cloudGrails & DevOps: continuous integration and delivery in the cloud
Grails & DevOps: continuous integration and delivery in the cloud
 
Functional testing your Grails app with GEB
Functional testing your Grails app with GEBFunctional testing your Grails app with GEB
Functional testing your Grails app with GEB
 
Deploying, Scaling, and Running Grails on AWS and VPC
Deploying, Scaling, and Running Grails on AWS and VPCDeploying, Scaling, and Running Grails on AWS and VPC
Deploying, Scaling, and Running Grails on AWS and VPC
 
The Grails introduction workshop
The Grails introduction workshopThe Grails introduction workshop
The Grails introduction workshop
 
Idiomatic spock
Idiomatic spockIdiomatic spock
Idiomatic spock
 
The Groovy Ecosystem Revisited
The Groovy Ecosystem RevisitedThe Groovy Ecosystem Revisited
The Groovy Ecosystem Revisited
 
Groovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGroovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examples
 
Integration using Apache Camel and Groovy
Integration using Apache Camel and GroovyIntegration using Apache Camel and Groovy
Integration using Apache Camel and Groovy
 
CRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual MachineCRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual Machine
 

GR8Conf 2011: myBalsamiq

  • 1. myBalsamiq Luis Arias balsamiq
  • 2. What we'll look at today What's Balsamiq and what do we do myBalsamiq a different beast in our product line Let's do a demo So how does myBalsamiq work ? Towards myBalsamiq 2.0 Some community contributions
  • 4. myBalsamiq - A different beast Always on Support thousands of users New technology New deployment model New people New business model
  • 6. Some cool facts First commit Jan 2009 (mvn archetype !) Some 4000+ commits now DB changelog has 615 commits Started on grails version 1.1, now on 1.3.7 Started on flexsdk 3.1.0.2710, now on custom 3.5.0.12683 Currently in gamma (invitation only, some 50 customers) Runs on Amazon EC2, RDS, moving to clustered tomcat Launch if everything's ready in June on Balsamiq's third birthday
  • 7. So how does myBalsamiq work ?
  • 9. Main Plugins feeds jdbc-pool liquibase mail pretty-size pretty-time quartz sanitizer shiro spreedly ui-performance wordpress
  • 10. How did Grails make a difference ? Provides the flexibility we need so we can focus on our first priority : user experience Liquibase provides essential database refactoring capability Provides the right tools for integration with third party services (plugins, services, taglibs, commands) Groovy language close to javascript, action script
  • 11. Towards myBalsamiq 2.0 Third party API clients Virtual private myBalsamiq instances Private databases Mockups Desktop Pro interoperability Improved collaborative features Alternative datastores / caches
  • 12. Community Contributions Spreedly Plugin Beaconpush Plugin Wordpress Plugin
  • 13. Spreedly Plugin Let spreedly deal with subscriptions for your service SpreedlyService maps to Spreedly REST API () createSubscriber findAllSubscriptionPlans giveComplementarySubscription ... SpreedlyTagLib provides important links Allow your users to choose a plan for your service Allow your users to update their credit card info Spreedly API Guide : http://www.spreedly. com/info/integration
  • 14. Beaconpush Plugin Provides a js event push model on top of beaconpush.com's real-time push service Works on SSL BeaconpushService PostToChannel PostToUser Mockup, Project and Site events Created Deleted Renamed Saved ...
  • 15. Beaconpush Example Mockup is renamed: def beaconpushService beaconpushService.mockupRenamed(mockup, user) On the client: $(document).bind('Renamed.Mockup', function(event) { $('mockup-name').html(event.name); }
  • 16. Wordpress Plugin Use wordpress as a backend web content editor Caches content in in-memory HSQLdb instance Refreshes periodically Provides domain model Category Comment Page Post Tag User Provides Service and Tag Lib
  • 17. Wordpress Plugin Example Displaying content from a wordpress page: def wordpressService def page = { [page: wordpressService.getPage(params.long('id'))] }
  • 18. To go further Balsamiq Web Site http://www.balsamiq.com Spreedly Integration Guide http://www.spreedly.com/info/integration Beaconpush Developer's Guide http://beaconpush.com/guide Sendgrid API Documentation http://sendgrid.com/documentation/api Amazon Web Services http://aws.amazon.com/