SlideShare a Scribd company logo
Managing Creativity  Pycon UK, Sept 2007 Michael Sparks Kamaelia Project BBC Research
Conflicting needs Research Don't know what the problem is Don't know the solution Don't know suitable approach Unknown requirements Production Know the problem inside out Have a solution which must be reliable Approach is known and engineered Requirements clear, but with scope for growth
Research Don't know what the problem is Don't know the solution Don't know suitable approach Unknown requirements Production Know the problem inside out Have a solution which must be reliable Approach is known and engineered Requirements clear, but with scope for growth Conflicting needs How to go from here to here?
Research Don't know what the problem is Don't know the solution Don't know suitable approach Unknown requirements Production Know the problem inside out Have a solution which must be reliable Approach is known and engineered Requirements clear, but with scope for growth Conflicting needs More like this!
Process Have an idea Build something to see if idea is good Review & build systems using it it is a good idea Make possible to use in production system Make production quality Exploration is very different from polishing
hackers&painters vs CS Hackers & Painters  essentially  postulates that coding is like painting Computer Science  essentially  postulates that coding is like engineering with solid foundations we can follow sound rules & constraints Both are right even though in conflict Huh?
Building a Building Sketch a design Collect system requirements Build models Refine Architect building based on physical stresses etc Refine Build Both engineered & crafted
Key Trick – Code as Wiki In python terms: Namespaces are one honking great idea -- let's do more of those!  -- import this Or wiki terms: Enlarge Space  - In order to preserve GlobalResources, create more public space. This reduces limited resource tension. Unlike the RealWorld, land is cheap online.
Core Approach Encourage play -  capture results  (sketchbooks) Encourage system building, component extraction Reuse & refine components Make testable Reimplement as TDD – potentially formalise tests as formal spec Version control as core enabler
Core Feature Flow Idea & Initial System /trunk/Sketches/<initials> Componentisation & Systems /branches/private_<initials>_Scratch (sometimes) Reuse & Candidate for main tree /branches/private_<initials>_anything Merge into Main Tree /trunk/Code
Feature Consolidation Testable /trunk/Code/<path>/Example/<example> /trunk/Code/<path>/Tests/test_<component>.py TDD /branches/private_<initials>_FeatureRewrite Merge /branches/private_<initials>_FeatureRewrite
Feature Future Proofing Tests as formal spec /trunk/Tests/Python/<project>/test_.... eg /trunk/Tests/Python/Axon/test_*
Feature Extension Idea /trunk/Sketches/<initials> Componentisation & Systems /branches/private_<initials>_Scratch (sometimes) Reuse & Candidate for main tree /branches/private_<initials>_anything Merge into Main Tree /trunk/Code
Alternative View Idea Shared Sketchbooks Componentisation & Systems Visible integration & demo of use Reuse & Candidate for main tree I'm handing this off for review Merge into Main Tree Release to general user base
Alternative View Idea Shared Sketchbooks Componentisation & Systems Visible integration & demo of use Reuse & Candidate for main tree I'm handing this off for review Merge into Main Tree Release to general user base Can use code for idea at all stages of development
Shared Sketchbooks /Sketches
Shared Sketchbooks:  /Sketches /Sketches/MPS – this is mine, I can do what I like there.  Does not have to work Can be imperfect Everyone else can see it eg /Sketches/MPS/Systems/Paint
Shared Sketchbooks:  /Sketches /Sketches/MH – this is Matt's, he can do what he likes there.  Does not have to work, can be imperfect, etc Can copy other people's sketches & extend eg /Sketches/MH/Sketcher
Shared Sketchbooks:  /Sketches Can also play with new ideas Handwriting recognition 3D Page turning a “record for me” PVR GestureRecognition/StrokeRecogniser.py , OpenGL/3fFolding.py, DVB_PSI/PVR.py
Shared Sketchbooks:  /Sketches Same goes for anyone else Trainee engineers Summer of code students Anyone else (you?) Can get feedback much sooner, and do fast diffs
What's there? Video annotating whiteboard, P2P swarming radio, IRC clients, pygame experiments, topology visualisation, paint programs, a multicast toolset, shedskin (python to C++) compatible micro-axon, simple reliable multicast experiments, sub-component level experiments, new tools for integration outside kamaelia, networked audio mixer matrix, record everything tv experiments, seaside-like HTTP server,  random experiments, tools for multicast of DVB & playback, networking of pipes distribution, gesture (and basic handwriting) recognition, custom PVRs, mobile reframers, 3D video playback, PVR content viewer for mobiles, trusted communications experiments, speex tools, Icecast clients, subtitling tickers, libao tests, early 3D work, bittorrent integration work, DVB tools, weather scraping etc
Visible Integration
Visible Integration /branches/private_<initials>_Scratch Personal version of trunk – may or may not actually be shared. Benefits of sharing Not at the whims of a merger to use new namespaces Don't corrupt others Provide mechanism to demo is “OK”
Visible Integration As you go through this process – more detail may emerge, and become clearer making more generally useful – better case for mainline merge
Hand off branches
Hand off branches Always named /branches/private_<initials>_feature Never merged to /trunk by their creator, unless agreed by all admins – encourage review & feedback.
Main Code Tree: /Code Code only reaches main code tree if: Has proved itself useful in /Sketches Merge onto pseudo trunk works well Passes code review
Key points Always have permission  to create new branches named appropriately Always have permission  to check in new code “ Force of gravity” approach to consolidation  Clear & simple code migration rules Version control as a tool to support process management tool
Key points Encourages play, encourages innovation, but in a manageable way, that also encourages development of an engineered usable system Really about “who owns a namespace”

More Related Content

ODP
Timeshift Everything, Miss Nothing - Mashup your PVR with Kamaelia
PPTX
XMPP, TV and the Semantic Web
PPTX
Launching Learning Content with xAPI
KEY
Re-imaginging CakePHP
ODP
The Selfish Programmer
ODP
Kamaelia Grey
PDF
Kamaelia Protocol Walkthrough
PDF
Kamaelia Europython Tutorial
Timeshift Everything, Miss Nothing - Mashup your PVR with Kamaelia
XMPP, TV and the Semantic Web
Launching Learning Content with xAPI
Re-imaginging CakePHP
The Selfish Programmer
Kamaelia Grey
Kamaelia Protocol Walkthrough
Kamaelia Europython Tutorial

Viewers also liked (16)

PDF
Embracing concurrency for fun utility and simpler code
PDF
Kamaelia lightning2010opensource
PDF
RabbitMQ with python and ruby RuPy 2009
PDF
Practical concurrent systems made simple using Kamaelia
PDF
Descriptors In Python
PDF
Messaging with RabbitMQ and AMQP
PPT
Django introduction
PDF
Data Analysis and Statistics in Python using pandas and statsmodels
ODP
Django for Beginners
PPT
Introduction To Django
PDF
Python for Financial Data Analysis with pandas
PPTX
Advance OOP concepts in Python
PDF
Python Advanced – Building on the foundation
PDF
Python Tricks That You Can't Live Without
PDF
Improving Python and Spark Performance and Interoperability: Spark Summit Eas...
PDF
Web Development with Python and Django
Embracing concurrency for fun utility and simpler code
Kamaelia lightning2010opensource
RabbitMQ with python and ruby RuPy 2009
Practical concurrent systems made simple using Kamaelia
Descriptors In Python
Messaging with RabbitMQ and AMQP
Django introduction
Data Analysis and Statistics in Python using pandas and statsmodels
Django for Beginners
Introduction To Django
Python for Financial Data Analysis with pandas
Advance OOP concepts in Python
Python Advanced – Building on the foundation
Python Tricks That You Can't Live Without
Improving Python and Spark Performance and Interoperability: Spark Summit Eas...
Web Development with Python and Django
Ad

Similar to Managing Creativity (20)

PDF
Building resuable and customizable Vue components
PDF
MongoDB World 2018: How an Idea Becomes a MongoDB Feature
PDF
Tools of destruction - Efrim Bartosik
PPTX
30 days or less: New Features to Production
PDF
Workshop - The Little Pattern That Could.pdf
PDF
DevExForPlatformEngineers, introducing Kratix
PPT
How to manage a big scale HTML/CSS project
PPT
29.4 Mb
PPT
29.4 mb
PDF
Teams, styles and scalable applications
PPTX
Autotools, Design Patterns and more
PDF
WEBASSEMBLY - What's the right thing to write? -
ODP
Building Scalable Development Environments
PDF
10 Ways To Improve Your Code
PPTX
Chris OBrien - Azure DevOps for managing work
PPTX
VS Code and Modern Development Environment Preview
PPTX
AEM.Design - Project Introduction
PDF
Ci tips and_tricks_linards_liepins
PPTX
Kubernetes and Local Dvelopment
PPT
Single sourcing to the max
Building resuable and customizable Vue components
MongoDB World 2018: How an Idea Becomes a MongoDB Feature
Tools of destruction - Efrim Bartosik
30 days or less: New Features to Production
Workshop - The Little Pattern That Could.pdf
DevExForPlatformEngineers, introducing Kratix
How to manage a big scale HTML/CSS project
29.4 Mb
29.4 mb
Teams, styles and scalable applications
Autotools, Design Patterns and more
WEBASSEMBLY - What's the right thing to write? -
Building Scalable Development Environments
10 Ways To Improve Your Code
Chris OBrien - Azure DevOps for managing work
VS Code and Modern Development Environment Preview
AEM.Design - Project Introduction
Ci tips and_tricks_linards_liepins
Kubernetes and Local Dvelopment
Single sourcing to the max
Ad

More from kamaelian (11)

PDF
Sharing Data and Services Safely in Concurrent Systems using Kamaelia
PDF
Sociable Software
PDF
Open Source at the BBC: When, Why, Why not & How
PDF
Open Source at the BBC
PDF
Kamaelia - Fave 2005
PDF
SWP - A Generic Language Parser
PDF
Kamaelia - Networking Using Generators
ODP
Scaling Streaming - Concepts, Research, Goals
ODP
Kamaelia Internals
PDF
Building systems with Kamaelia
PDF
Free software: How does it work?
Sharing Data and Services Safely in Concurrent Systems using Kamaelia
Sociable Software
Open Source at the BBC: When, Why, Why not & How
Open Source at the BBC
Kamaelia - Fave 2005
SWP - A Generic Language Parser
Kamaelia - Networking Using Generators
Scaling Streaming - Concepts, Research, Goals
Kamaelia Internals
Building systems with Kamaelia
Free software: How does it work?

Recently uploaded (20)

PDF
Machine learning based COVID-19 study performance prediction
PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Cloud computing and distributed systems.
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PDF
NewMind AI Monthly Chronicles - July 2025
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Modernizing your data center with Dell and AMD
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PDF
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
PDF
Unlocking AI with Model Context Protocol (MCP)
DOCX
The AUB Centre for AI in Media Proposal.docx
PDF
Electronic commerce courselecture one. Pdf
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Machine learning based COVID-19 study performance prediction
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Empathic Computing: Creating Shared Understanding
Cloud computing and distributed systems.
The Rise and Fall of 3GPP – Time for a Sabbatical?
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
NewMind AI Monthly Chronicles - July 2025
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Digital-Transformation-Roadmap-for-Companies.pptx
Modernizing your data center with Dell and AMD
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Chapter 3 Spatial Domain Image Processing.pdf
Build a system with the filesystem maintained by OSTree @ COSCUP 2025
Unlocking AI with Model Context Protocol (MCP)
The AUB Centre for AI in Media Proposal.docx
Electronic commerce courselecture one. Pdf
How UI/UX Design Impacts User Retention in Mobile Apps.pdf

Managing Creativity

  • 1. Managing Creativity Pycon UK, Sept 2007 Michael Sparks Kamaelia Project BBC Research
  • 2. Conflicting needs Research Don't know what the problem is Don't know the solution Don't know suitable approach Unknown requirements Production Know the problem inside out Have a solution which must be reliable Approach is known and engineered Requirements clear, but with scope for growth
  • 3. Research Don't know what the problem is Don't know the solution Don't know suitable approach Unknown requirements Production Know the problem inside out Have a solution which must be reliable Approach is known and engineered Requirements clear, but with scope for growth Conflicting needs How to go from here to here?
  • 4. Research Don't know what the problem is Don't know the solution Don't know suitable approach Unknown requirements Production Know the problem inside out Have a solution which must be reliable Approach is known and engineered Requirements clear, but with scope for growth Conflicting needs More like this!
  • 5. Process Have an idea Build something to see if idea is good Review & build systems using it it is a good idea Make possible to use in production system Make production quality Exploration is very different from polishing
  • 6. hackers&painters vs CS Hackers & Painters essentially postulates that coding is like painting Computer Science essentially postulates that coding is like engineering with solid foundations we can follow sound rules & constraints Both are right even though in conflict Huh?
  • 7. Building a Building Sketch a design Collect system requirements Build models Refine Architect building based on physical stresses etc Refine Build Both engineered & crafted
  • 8. Key Trick – Code as Wiki In python terms: Namespaces are one honking great idea -- let's do more of those! -- import this Or wiki terms: Enlarge Space - In order to preserve GlobalResources, create more public space. This reduces limited resource tension. Unlike the RealWorld, land is cheap online.
  • 9. Core Approach Encourage play - capture results (sketchbooks) Encourage system building, component extraction Reuse & refine components Make testable Reimplement as TDD – potentially formalise tests as formal spec Version control as core enabler
  • 10. Core Feature Flow Idea & Initial System /trunk/Sketches/<initials> Componentisation & Systems /branches/private_<initials>_Scratch (sometimes) Reuse & Candidate for main tree /branches/private_<initials>_anything Merge into Main Tree /trunk/Code
  • 11. Feature Consolidation Testable /trunk/Code/<path>/Example/<example> /trunk/Code/<path>/Tests/test_<component>.py TDD /branches/private_<initials>_FeatureRewrite Merge /branches/private_<initials>_FeatureRewrite
  • 12. Feature Future Proofing Tests as formal spec /trunk/Tests/Python/<project>/test_.... eg /trunk/Tests/Python/Axon/test_*
  • 13. Feature Extension Idea /trunk/Sketches/<initials> Componentisation & Systems /branches/private_<initials>_Scratch (sometimes) Reuse & Candidate for main tree /branches/private_<initials>_anything Merge into Main Tree /trunk/Code
  • 14. Alternative View Idea Shared Sketchbooks Componentisation & Systems Visible integration & demo of use Reuse & Candidate for main tree I'm handing this off for review Merge into Main Tree Release to general user base
  • 15. Alternative View Idea Shared Sketchbooks Componentisation & Systems Visible integration & demo of use Reuse & Candidate for main tree I'm handing this off for review Merge into Main Tree Release to general user base Can use code for idea at all stages of development
  • 17. Shared Sketchbooks: /Sketches /Sketches/MPS – this is mine, I can do what I like there. Does not have to work Can be imperfect Everyone else can see it eg /Sketches/MPS/Systems/Paint
  • 18. Shared Sketchbooks: /Sketches /Sketches/MH – this is Matt's, he can do what he likes there. Does not have to work, can be imperfect, etc Can copy other people's sketches & extend eg /Sketches/MH/Sketcher
  • 19. Shared Sketchbooks: /Sketches Can also play with new ideas Handwriting recognition 3D Page turning a “record for me” PVR GestureRecognition/StrokeRecogniser.py , OpenGL/3fFolding.py, DVB_PSI/PVR.py
  • 20. Shared Sketchbooks: /Sketches Same goes for anyone else Trainee engineers Summer of code students Anyone else (you?) Can get feedback much sooner, and do fast diffs
  • 21. What's there? Video annotating whiteboard, P2P swarming radio, IRC clients, pygame experiments, topology visualisation, paint programs, a multicast toolset, shedskin (python to C++) compatible micro-axon, simple reliable multicast experiments, sub-component level experiments, new tools for integration outside kamaelia, networked audio mixer matrix, record everything tv experiments, seaside-like HTTP server, random experiments, tools for multicast of DVB & playback, networking of pipes distribution, gesture (and basic handwriting) recognition, custom PVRs, mobile reframers, 3D video playback, PVR content viewer for mobiles, trusted communications experiments, speex tools, Icecast clients, subtitling tickers, libao tests, early 3D work, bittorrent integration work, DVB tools, weather scraping etc
  • 23. Visible Integration /branches/private_<initials>_Scratch Personal version of trunk – may or may not actually be shared. Benefits of sharing Not at the whims of a merger to use new namespaces Don't corrupt others Provide mechanism to demo is “OK”
  • 24. Visible Integration As you go through this process – more detail may emerge, and become clearer making more generally useful – better case for mainline merge
  • 26. Hand off branches Always named /branches/private_<initials>_feature Never merged to /trunk by their creator, unless agreed by all admins – encourage review & feedback.
  • 27. Main Code Tree: /Code Code only reaches main code tree if: Has proved itself useful in /Sketches Merge onto pseudo trunk works well Passes code review
  • 28. Key points Always have permission to create new branches named appropriately Always have permission to check in new code “ Force of gravity” approach to consolidation Clear & simple code migration rules Version control as a tool to support process management tool
  • 29. Key points Encourages play, encourages innovation, but in a manageable way, that also encourages development of an engineered usable system Really about “who owns a namespace”