SlideShare a Scribd company logo
1 of 93
Staging & Deployment
Greg Dunlap
 Senior Programmer
     Palantir.net
The Problem
Traditional Deployment
Traditional Deployment


• Everything is in code
Traditional Deployment


• Everything is in code
• Mature tools to manage the code (svn,
  editors, command line dist. tools)
Traditional Deployment


• Everything is in code
• Mature tools to manage the code (svn,
  editors, command line dist. tools)
• Code moves one way (dev -> qa -> prod)
Drupal Deployment
Drupal Deployment
• Drupal stores a lot in the database
Drupal Deployment
• Drupal stores a lot in the database
• CCK, Views, Settings, Blocks, Content
Drupal Deployment
• Drupal stores a lot in the database
• CCK, Views, Settings, Blocks, Content
• Data moves both ways (dev/configuration
  starts in production and moves out, user-
  generated content starts at prod and
  comes in) so can’t just mysqldump from
  dev
Drupal Deployment
• Drupal stores a lot in the database
• CCK, Views, Settings, Blocks, Content
• Data moves both ways (dev/configuration
  starts in production and moves out, user-
  generated content starts at prod and
  comes in) so can’t just mysqldump from
  dev
• No mature toolset to merge
Content vs. Config
Content vs. Config
• Content and Configuration have very
  different problems
Content vs. Config
• Content and Configuration have very
  different problems
• Content - Primary key problems,
  inconsistent dependencies, some poor APIs
  (although most are better in D7 yay)
Content vs. Config
• Content and Configuration have very
  different problems
• Content - Primary key problems,
  inconsistent dependencies, some poor APIs
  (although most are better in D7 yay)
• Config - Wildly inconsistent storage and
  exportability, plus a lot of the above too
hook_form_alter()
hook_form_alter()

• The cause of, and solution to, all life’s
  problems.
hook_form_alter()

• The cause of, and solution to, all life’s
  problems.
• Couples back end and front end
hook_form_alter()

• The cause of, and solution to, all life’s
  problems.
• Couples back end and front end
• Makes it difficult for any purely backend
  solution to work consistently
Options That Suck
Options That Suck

• Develop on production
Options That Suck

• Develop on production
• Repeat everything by hand at launch
Options That Suck

• Develop on production
• Repeat everything by hand at launch
• Seriously life is too short
A Better Option
Move stuff traditionally stored in the database into code.
       This is traditionally how people handle it.
Putting it in code
Putting it in code

• Find an import/export mechanism, write an
  update hook.
Putting it in code

• Find an import/export mechanism, write an
  update hook.
• Devel Macro Module (D5 only)
Putting it in code

• Find an import/export mechanism, write an
  update hook.
• Devel Macro Module (D5 only)
• Views / Panels export/import
Putting it in code

• Find an import/export mechanism, write an
  update hook.
• Devel Macro Module (D5 only)
• Views / Panels export/import
• Content Copy
Putting it in code

• Find an import/export mechanism, write an
  update hook.
• Devel Macro Module (D5 only)
• Views / Panels export/import
• Content Copy
• Patterns
Some Links
Some Links

• Programmatic CCK Now Possible
Some Links

• Programmatic CCK Now Possible
• Managing Your Views Code
Some Links

• Programmatic CCK Now Possible
• Managing Your Views Code
• Lullabot - Moving CCK Changes From Dev
  To Live
Pros & Cons
Pros & Cons

• Pro - Maintainable through svn and
  deployable through normal tools. Great
  option for developer-only shops
Pros & Cons

• Pro - Maintainable through svn and
  deployable through normal tools. Great
  option for developer-only shops
• Con - Non-technical users left behind. GUI
  does not automatically update code, still
  have to do that by hand.
Interesting Conceptually
      Primary key database hacks
Reserved Key IDs
Reserved Key IDs

• Set auto-inc on dev to start at 1
Reserved Key IDs

• Set auto-inc on dev to start at 1
• Set auto-inc on live to start at 1001
Reserved Key IDs

• Set auto-inc on dev to start at 1
• Set auto-inc on live to start at 1001
• Module to move items over
Reserved Key IDs

• Set auto-inc on dev to start at 1
• Set auto-inc on live to start at 1001
• Module to move items over
• Always have a clear set of IDs
Reserved Key IDs

• Set auto-inc on dev to start at 1
• Set auto-inc on live to start at 1001
• Module to move items over
• Always have a clear set of IDs
• Dave Cohen's blog post
Database Scripts
Database Scripts

• Extension of the reserved number method
Database Scripts

• Extension of the reserved number method
• Keeps database dumps in version control
Database Scripts

• Extension of the reserved number method
• Keeps database dumps in version control
• Merges dev and production data
Database Scripts

• Extension of the reserved number method
• Keeps database dumps in version control
• Merges dev and production data
• DBscripts
Pros & Cons
Pros & Cons

• Pros - Clever outside the box idea. Starts
  to address the great unknown of how to
  deploy nodes, etc.
Pros & Cons

• Pros - Clever outside the box idea. Starts
  to address the great unknown of how to
  deploy nodes, etc.
• Cons - Core hacks, not forward-thinking,
  not always db-portable, not the “Drupal
  way”
Up & Coming
Exportables
Framework for getting data out
Exportables
Exportables
• A part of CTools
Exportables
• A part of CTools
• Exposes a hook you implement to export
  whatever content you have
Exportables
• A part of CTools
• Exposes a hook you implement to export
  whatever content you have
• Need to write your own import stuff
Exportables
• A part of CTools
• Exposes a hook you implement to export
  whatever content you have
• Need to write your own import stuff
• Good: Standardized, consistent
Exportables
• A part of CTools
• Exposes a hook you implement to export
  whatever content you have
• Need to write your own import stuff
• Good: Standardized, consistent
• Bad: Still suffers from form_alter() issue
Features
  Config
Features
Features

• You all went to Robin’s talk right?
Features

• You all went to Robin’s talk right?
• Bundle settings into modules for
  distribution
Features

• You all went to Robin’s talk right?
• Bundle settings into modules for
  distribution
• Built on exportables concept
Features

• You all went to Robin’s talk right?
• Bundle settings into modules for
  distribution
• Built on exportables concept
• Coverage is small but growing
Deploy
 Content
Concept
Concept
• Inspired by Services module
Concept
• Inspired by Services module
• API - Manages Deployment Plans and Servers
Concept
• Inspired by Services module
• API - Manages Deployment Plans and Servers
• Modules integrate with API
Concept
• Inspired by Services module
• API - Manages Deployment Plans and Servers
• Modules integrate with API
• Services receive and manage deployed data
Concept
• Inspired by Services module
• API - Manages Deployment Plans and Servers
• Modules integrate with API
• Services receive and manage deployed data
• Implements UUIDs to alleviate primary key
  issues
Concept
• Inspired by Services module
• API - Manages Deployment Plans and Servers
• Modules integrate with API
• Services receive and manage deployed data
• Implements UUIDs to alleviate primary key
  issues
• Manages dependencies between nodes and
  other Drupal objects (users, taxonomy, etc.)
Demo Here
Demo Here


• w00t
Problems
Problems

• Revisioning
Problems

• Revisioning
• Rollback (unless you count mysqldump)
Problems

• Revisioning
• Rollback (unless you count mysqldump)
• Can’t do unattended deployments
Problems

• Revisioning
• Rollback (unless you count mysqldump)
• Can’t do unattended deployments
• Gaps in support (upload.module,
  translations, blocks, etc.)
Conclusions
Conclusions

• No magic bullets
Conclusions

• No magic bullets
• Investigate, evaluate, plan plan plan
Conclusions

• No magic bullets
• Investigate, evaluate, plan plan plan
• Ask questions
Conclusions

• No magic bullets
• Investigate, evaluate, plan plan plan
• Ask questions
• Get involved!
Further Discussion
Further Discussion

• Deployment Framework Posting
Further Discussion

• Deployment Framework Posting
• Development Seed Features posts
Further Discussion

• Deployment Framework Posting
• Development Seed Features posts
• Change Management Group

More Related Content

What's hot

DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the thingsMat Mannion
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....Mike Harris
 
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Andy Maleh
 
Dev "Programming" Ops For DevOps Success
Dev "Programming" Ops For DevOps SuccessDev "Programming" Ops For DevOps Success
Dev "Programming" Ops For DevOps SuccessC4Media
 
Picnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationPicnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationNick Josevski
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsAchievers Tech
 
Whitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveWhitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveDragos Manolescu
 
Laravel and Django and Rails, Oh My!
Laravel and Django and Rails, Oh My!Laravel and Django and Rails, Oh My!
Laravel and Django and Rails, Oh My!Chris Roberts
 
Concurrent Product Release Planning with JIRA
Concurrent Product Release Planning with JIRAConcurrent Product Release Planning with JIRA
Concurrent Product Release Planning with JIRAAtlassian
 
Bridging the Gap - Laracon 2013
Bridging the Gap - Laracon 2013Bridging the Gap - Laracon 2013
Bridging the Gap - Laracon 2013Ben Corlett
 
Stop Building It From Scratch: Creating Reusable eLearning Components
Stop Building It From Scratch: Creating Reusable eLearning ComponentsStop Building It From Scratch: Creating Reusable eLearning Components
Stop Building It From Scratch: Creating Reusable eLearning ComponentsChad Udell
 
Circular interconnected gear pieces smart arts process stages 7 powerpoint d...
Circular interconnected gear pieces  smart arts process stages 7 powerpoint d...Circular interconnected gear pieces  smart arts process stages 7 powerpoint d...
Circular interconnected gear pieces smart arts process stages 7 powerpoint d...SlideTeam.net
 
Plone for Education: Bibliographies
Plone for Education: BibliographiesPlone for Education: Bibliographies
Plone for Education: BibliographiesCristopher Ewing
 
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010Atlassian
 
But We're Already Open Source! Why Would I Want To Bring My Code To Apache?
But We're Already Open Source! Why Would I Want To Bring My Code To Apache?But We're Already Open Source! Why Would I Want To Bring My Code To Apache?
But We're Already Open Source! Why Would I Want To Bring My Code To Apache?gagravarr
 
Test Automation for Packaged Systems: Yes, You Can!
Test Automation for Packaged Systems: Yes, You Can!Test Automation for Packaged Systems: Yes, You Can!
Test Automation for Packaged Systems: Yes, You Can!TechWell
 

What's hot (20)

DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
 
Getting started with PHP on IBM i
Getting started with PHP on IBM iGetting started with PHP on IBM i
Getting started with PHP on IBM i
 
Forget The ORM!
Forget The ORM!Forget The ORM!
Forget The ORM!
 
How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....How I Learned to Stop Worrying and Love Legacy Code.....
How I Learned to Stop Worrying and Love Legacy Code.....
 
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
Software Design Trilogy Part III - Domain Driven Design for Ruby on Rails App...
 
Dev "Programming" Ops For DevOps Success
Dev "Programming" Ops For DevOps SuccessDev "Programming" Ops For DevOps Success
Dev "Programming" Ops For DevOps Success
 
Alex Theedom Java ee revisits design patterns
Alex Theedom	Java ee revisits design patternsAlex Theedom	Java ee revisits design patterns
Alex Theedom Java ee revisits design patterns
 
Picnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable applicationPicnic Software - Developing a flexible and scalable application
Picnic Software - Developing a flexible and scalable application
 
Profiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty DetailsProfiling and Tuning a Web Application - The Dirty Details
Profiling and Tuning a Web Application - The Dirty Details
 
Whitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to ReactiveWhitepages Practical Experience Converting from Ruby to Reactive
Whitepages Practical Experience Converting from Ruby to Reactive
 
Laravel and Django and Rails, Oh My!
Laravel and Django and Rails, Oh My!Laravel and Django and Rails, Oh My!
Laravel and Django and Rails, Oh My!
 
Concurrent Product Release Planning with JIRA
Concurrent Product Release Planning with JIRAConcurrent Product Release Planning with JIRA
Concurrent Product Release Planning with JIRA
 
Bridging the Gap - Laracon 2013
Bridging the Gap - Laracon 2013Bridging the Gap - Laracon 2013
Bridging the Gap - Laracon 2013
 
Stop Building It From Scratch: Creating Reusable eLearning Components
Stop Building It From Scratch: Creating Reusable eLearning ComponentsStop Building It From Scratch: Creating Reusable eLearning Components
Stop Building It From Scratch: Creating Reusable eLearning Components
 
Circular interconnected gear pieces smart arts process stages 7 powerpoint d...
Circular interconnected gear pieces  smart arts process stages 7 powerpoint d...Circular interconnected gear pieces  smart arts process stages 7 powerpoint d...
Circular interconnected gear pieces smart arts process stages 7 powerpoint d...
 
Plone for Education: Bibliographies
Plone for Education: BibliographiesPlone for Education: Bibliographies
Plone for Education: Bibliographies
 
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
Change and Release Management with JIRA and Bamboo - Atlassian Summit 2010
 
But We're Already Open Source! Why Would I Want To Bring My Code To Apache?
But We're Already Open Source! Why Would I Want To Bring My Code To Apache?But We're Already Open Source! Why Would I Want To Bring My Code To Apache?
But We're Already Open Source! Why Would I Want To Bring My Code To Apache?
 
Big Data at Riot Games
Big Data at Riot GamesBig Data at Riot Games
Big Data at Riot Games
 
Test Automation for Packaged Systems: Yes, You Can!
Test Automation for Packaged Systems: Yes, You Can!Test Automation for Packaged Systems: Yes, You Can!
Test Automation for Packaged Systems: Yes, You Can!
 

Similar to Staging and Deployment

Drupal upgrades and migrations. BAD Camp 2013 version
Drupal upgrades and migrations. BAD Camp 2013 versionDrupal upgrades and migrations. BAD Camp 2013 version
Drupal upgrades and migrations. BAD Camp 2013 versionDavid Lanier
 
Deployment is the new build
Deployment is the new buildDeployment is the new build
Deployment is the new buildAndrew Phillips
 
Get your Project back in Shape!
Get your Project back in Shape!Get your Project back in Shape!
Get your Project back in Shape!Joachim Tuchel
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & Youjskulski
 
Upgrading to Drupal 7
Upgrading to Drupal 7Upgrading to Drupal 7
Upgrading to Drupal 7DesignHammer
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studyGaetano Giunta
 
Deploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremKris Buytaert
 
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...Steve Kessler
 
Deployment Strategies: Managing Code, Content, and Configurations
Deployment Strategies: Managing Code, Content, and ConfigurationsDeployment Strategies: Managing Code, Content, and Configurations
Deployment Strategies: Managing Code, Content, and Configurationsnyccamp
 
Building and Deploying MediaSalsa, a drupal-based DAM as a Service
Building and Deploying MediaSalsa, a drupal-based DAM as a ServiceBuilding and Deploying MediaSalsa, a drupal-based DAM as a Service
Building and Deploying MediaSalsa, a drupal-based DAM as a ServiceJulien Pivotto
 
Application Deployment at UC Riverside
Application Deployment at UC RiversideApplication Deployment at UC Riverside
Application Deployment at UC RiversideMichael Kennedy
 
Cincom Smalltalk News
Cincom Smalltalk NewsCincom Smalltalk News
Cincom Smalltalk NewsESUG
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011camp_drupal_ua
 
Drupal 8 introduction
Drupal 8 introductionDrupal 8 introduction
Drupal 8 introductionAditya Ghan
 
Pipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodePipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodeKris Buytaert
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comAviran Mordo
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersSPC Adriatics
 
DMann-SQLDeveloper4Reporting
DMann-SQLDeveloper4ReportingDMann-SQLDeveloper4Reporting
DMann-SQLDeveloper4ReportingDavid Mann
 
Bringing DevOps to the Database
Bringing DevOps to the DatabaseBringing DevOps to the Database
Bringing DevOps to the DatabaseMichaela Murray
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationXPDays
 

Similar to Staging and Deployment (20)

Drupal upgrades and migrations. BAD Camp 2013 version
Drupal upgrades and migrations. BAD Camp 2013 versionDrupal upgrades and migrations. BAD Camp 2013 version
Drupal upgrades and migrations. BAD Camp 2013 version
 
Deployment is the new build
Deployment is the new buildDeployment is the new build
Deployment is the new build
 
Get your Project back in Shape!
Get your Project back in Shape!Get your Project back in Shape!
Get your Project back in Shape!
 
Features, Exportables & You
Features, Exportables & YouFeatures, Exportables & You
Features, Exportables & You
 
Upgrading to Drupal 7
Upgrading to Drupal 7Upgrading to Drupal 7
Upgrading to Drupal 7
 
Symfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case studySymfony2 for legacy app rejuvenation: the eZ Publish case study
Symfony2 for legacy app rejuvenation: the eZ Publish case study
 
Deploying your SaaS stack OnPrem
Deploying your SaaS stack OnPremDeploying your SaaS stack OnPrem
Deploying your SaaS stack OnPrem
 
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
Resources for Navigating Drupal Upgrades: Versions 6 Through 8 And What It Me...
 
Deployment Strategies: Managing Code, Content, and Configurations
Deployment Strategies: Managing Code, Content, and ConfigurationsDeployment Strategies: Managing Code, Content, and Configurations
Deployment Strategies: Managing Code, Content, and Configurations
 
Building and Deploying MediaSalsa, a drupal-based DAM as a Service
Building and Deploying MediaSalsa, a drupal-based DAM as a ServiceBuilding and Deploying MediaSalsa, a drupal-based DAM as a Service
Building and Deploying MediaSalsa, a drupal-based DAM as a Service
 
Application Deployment at UC Riverside
Application Deployment at UC RiversideApplication Deployment at UC Riverside
Application Deployment at UC Riverside
 
Cincom Smalltalk News
Cincom Smalltalk NewsCincom Smalltalk News
Cincom Smalltalk News
 
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
Anna Fedoruk.Theworkflow.DrupalCamp Kyiv 2011
 
Drupal 8 introduction
Drupal 8 introductionDrupal 8 introduction
Drupal 8 introduction
 
Pipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as CodePipeline as code for your infrastructure as Code
Pipeline as code for your infrastructure as Code
 
Road to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.comRoad to Continuous Delivery - Wix.com
Road to Continuous Delivery - Wix.com
 
Lean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill AyersLean-Agile Development with SharePoint - Bill Ayers
Lean-Agile Development with SharePoint - Bill Ayers
 
DMann-SQLDeveloper4Reporting
DMann-SQLDeveloper4ReportingDMann-SQLDeveloper4Reporting
DMann-SQLDeveloper4Reporting
 
Bringing DevOps to the Database
Bringing DevOps to the DatabaseBringing DevOps to the Database
Bringing DevOps to the Database
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 

More from heyrocker

Painting the bikeshed
Painting the bikeshedPainting the bikeshed
Painting the bikeshedheyrocker
 
Drupal 8 Configuration Management Initiative Update
Drupal 8 Configuration Management Initiative UpdateDrupal 8 Configuration Management Initiative Update
Drupal 8 Configuration Management Initiative Updateheyrocker
 
Come Together - DrupalCamp Stockholm Keynote
Come Together - DrupalCamp Stockholm KeynoteCome Together - DrupalCamp Stockholm Keynote
Come Together - DrupalCamp Stockholm Keynoteheyrocker
 
A Shot In The Arm
A Shot In The ArmA Shot In The Arm
A Shot In The Armheyrocker
 
Deployment in Drupal 8
Deployment in Drupal 8Deployment in Drupal 8
Deployment in Drupal 8heyrocker
 
Drupal Services 3 - Drupal Dev Days 2011, Brussels
Drupal Services 3 - Drupal Dev Days 2011, BrusselsDrupal Services 3 - Drupal Dev Days 2011, Brussels
Drupal Services 3 - Drupal Dev Days 2011, Brusselsheyrocker
 
How To Not Suck At Pinball
How To Not Suck At PinballHow To Not Suck At Pinball
How To Not Suck At Pinballheyrocker
 

More from heyrocker (8)

Painting the bikeshed
Painting the bikeshedPainting the bikeshed
Painting the bikeshed
 
Drupal 8 Configuration Management Initiative Update
Drupal 8 Configuration Management Initiative UpdateDrupal 8 Configuration Management Initiative Update
Drupal 8 Configuration Management Initiative Update
 
Come Together - DrupalCamp Stockholm Keynote
Come Together - DrupalCamp Stockholm KeynoteCome Together - DrupalCamp Stockholm Keynote
Come Together - DrupalCamp Stockholm Keynote
 
A Shot In The Arm
A Shot In The ArmA Shot In The Arm
A Shot In The Arm
 
Core conv
Core convCore conv
Core conv
 
Deployment in Drupal 8
Deployment in Drupal 8Deployment in Drupal 8
Deployment in Drupal 8
 
Drupal Services 3 - Drupal Dev Days 2011, Brussels
Drupal Services 3 - Drupal Dev Days 2011, BrusselsDrupal Services 3 - Drupal Dev Days 2011, Brussels
Drupal Services 3 - Drupal Dev Days 2011, Brussels
 
How To Not Suck At Pinball
How To Not Suck At PinballHow To Not Suck At Pinball
How To Not Suck At Pinball
 

Recently uploaded

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 

Recently uploaded (20)

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 

Staging and Deployment