Slides from my presentation at CodeIgniter Conference 2010 in Bristol in August 2010.
What I talked about:
- Startups: methodologies & techniques
- CodeIgniter: applying what we’ve learned
- The future: how could things be better
The goal of every developer is get her super cool new feature out to customers, as fast as possible, with little to no bugs and with no manual effort so she can go back to coding the next awesome one. Doing all of this takes tremendous amounts of effort to plan, coordinate and execute on a DevOps engineer. Continuous Integration coupled with Continuous Deployment aide in this endeavor. But again, those are cumbersome and can be difficult to set up. AWS has four new tools to help with this; AWS CodeDeploy, CodeCommit, CodePipeline, and CodeBuild. Each one has specialized features to help get your code to customers faster, more reliable and bug free as possible. In this presentation, we will walk through how to setup a CI/CD pipeline using those AWS tools and demonstrate how we can go from yay it compiles to a 5-star review.
Murughan Palaniachari conducted a DevOps LEGO game session using LEGO sets to teach DevOps principles and practices. The game involved forming multi-disciplinary teams to build LEGO models within a 15 minute sprint based on a product requirement. Teams applied DevOps roles like development, QA, and operations. After building, teams presented their models and discussed the DevOps principles they applied, like collaboration, communication, feedback, and empowerment. The team demonstrating the most DevOps practices and delivering the highest quality product were declared the winners. The game was an effective way to learn how DevOps eliminates silos and promotes shared culture, automation, measurement, and knowledge sharing.
This is a presentation that Richard Mateosian gave to the STC-Silicon Valley chapter in November 2015. To learn more, see http://www.stc-siliconvalley.org.
Evolve 2017 - Vegas - Devops, Docker and Security John Willis
This document discusses DevOps, Docker, and security. It begins by introducing the speaker and their background in DevOps. It then discusses how DevOps practices like continuous delivery, automation, and culture can make organizations 2000x faster. It introduces Docker and how it can make deployments more effective. Finally, it discusses how applying supply chain principles from Toyota, such as limiting variability and ensuring visibility, can make systems 100x more reliable when combined with Docker and immutable infrastructure.
Revolutionize Your Workflow with ChatOpsTessa Mero
- The document is a presentation by Tessa Mero on revolutionizing workflows with ChatOps. It discusses what ChatOps is, how it can help connect teams and automate workflows, and examples of how companies are using ChatOps. It also provides an overview of common chat tools and bot frameworks that can be used to implement ChatOps, such as Hubot, Lita, and Errbot, as well as examples of how specific DevOps tools integrate with ChatOps. The presentation includes quotes from developers on how ChatOps has helped improve collaboration and automation.
- This document provides instructions for building a basic chat bot using the Cisco Spark API and deploying it on Cloud9. It discusses what chat bots are and their benefits. It then walks through setting up a Cisco Spark account, creating a bot profile, deploying the bot code to Cloud9, adding webhook events to trigger the bot, and testing the bot responses.
Microservices - Scaling Development and ServicePaulo Gaspar
This document discusses microservices and provides recommendations for developing microservice architectures. It begins by comparing experiences developing large and small systems. Microservices are then defined as independently deployable services that communicate via lightweight mechanisms like HTTP. Examples are provided of companies that pioneered microservices like Amazon and Netflix. The document concludes by recommending developers start small with microservices, focus on principles over specific technologies, and address challenges of distributed systems through monitoring, resilience patterns, and infrastructure support.
OpenStack is an open source cloud computing platform that delivers solutions for public and private clouds. The OpenStack project consists of a series of interrelated projects that deliver components for a cloud infrastructure. The OpenStack documentation project uses an open development model with contributions from the community. It aims to increase adoption of OpenStack through strategic, collaborative, and open documentation processes.
Engage 2019: Modernising Your Domino and XPages Applications Paul Withers
This document discusses modernizing Domino and XPages applications. It covers modernizing web and mobile interfaces, using Dynamic Query Language for improved performance, and integrating applications via REST APIs. The document provides examples and considerations for updating applications' user interfaces, database design, and integration to meet modern needs and habits while leveraging new platform capabilities.
Vert.x is a toolkit for building reactive applications on the JVM. It was awarded for 'Most Innovative Java Technology' at the JAX Innovation awards. Vert.x is event driven, non blocking and polyglot, which makes it an excellent platform for building microservices. In this talk, I’ll share experiences and real-world use cases from a Dutch company that started building reactive web applications with Vert.x about 4 years ago. You’ll learn the concepts behind Vert.x, why we chose Vert.x, how we’re using it and the challenges we faced. Topics include the anatomy of our projects, (micro)services architecture, deployment model and DevOps, scalability, the upgrade from Vert.x 2 to Vert.x 3 and cooperation with the team behind Vert.x. At the end of this session, you’ll know enough about Vert.x to get started yourself right away!
This document discusses open source software (OSS) and provides advice for overcoming cultural resistance to using OSS in organizations. It notes common objections from management like concerns over cost, security, and support. It recommends starting small with non-critical projects, emphasizing quality open source options, and educating management on OSS licensing models and the business benefits of OSS like faster innovation and attracting technical talent.
DevOps is a set of practices intended to reduce the time between committing a change to a system and deploying it to production while ensuring high quality. It focuses on bridging the gap between developers and operations teams. Key DevOps principles include systems thinking, amplifying feedback loops, and a culture of experimentation. DevOps aims to achieve continuous delivery through practices like automated deployments, infrastructure as code, and deployment strategies like blue-green deployments and rolling upgrades.
Moving From Infrastructure Automation To True DevOpsXebiaLabs
The document discusses different approaches to implementing DevOps. It describes providing a platform where operations provides a runtime environment and applications are developed to run on that platform. It also describes integrated full-stack development teams where developers work across the entire development process. It emphasizes that there is no single right approach and organizations need to determine what works best for their context based on factors like organizational structure and software used. The goal of any approach should be quantifiable benefits like faster development and reduced costs.
GeekOut 2017 - Microservices in action at the Dutch National PoliceBert Jan Schrijver
Microservices? At the Police? Definitely!
At the Cloud, Big Data and Internet division of the Dutch National Police, 3 DevOps teams use the latest open source technology to build high tech, cloud native web applications in a private cloud. These applications are used to support various types of police work with data from open, online sources and are built using Spring Boot, Angular 4, Spark, Kafka and Jenkins 2.
In this session, I'll share our experiences and real-world use cases for microservices. I’ll explain our architecture, why we chose it, which challenges we face and what this all brings us. I’ll show how 3 teams work together on one product, loosely based on the models used by Spotify and Netflix, and I’ll talk about how we apply the principles of DevOps and Continuous Delivery. I’ll show how we handle security, build pipelines, test automation, performance tests, automated deployments and monitoring.
You’ll leave this session with an understanding of how this approach enables us to have the agility of a startup within the large Police organisation.
Alfresco DevCon 2019: Interaxo - A journey to Cloud NativeAsgeir Frimannsson
1) Interaxo is a SaaS application for managing building projects that uses Alfresco and has grown to over 1,000 tenants and 50,000 users.
2) The company transitioned to a cloud native architecture using Kubernetes, Docker, and AWS to allow for better scalability, automation, and continuous delivery in order to keep up with growth and gain strategic advantages.
3) Some guiding principles of the cloud native transition included treating their datacenter as a cloud provider, adopting Kubernetes gradually through proof of concepts, and using GitOps over complex Jenkins pipelines for configuration and deployments.
Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)ajevans
This document summarizes the re-architecture of the CBeebies children's website using the Play framework. It describes the issues with the previous PHP-based system, how a spike using Play demonstrated benefits, and the iterative process of migrating the team and application to the new Scala/Play stack. Key steps included standing up a prototype, recruiting new developers, splitting work into modular sections, and releasing iteratively to production on AWS. Challenges included transitioning the existing team to a new language and framework and managing risks of the significant technical change.
Engage 2019 - De04. Java with Domino After XPagesJesse Gallagher
This document discusses paths forward for developers using Java and XPages with Domino after HCL's acquisition. It outlines that XPages introduced Java development to Domino but faced limitations. Going forward, options include returning to LotusScript, using Node.js, continuing with XPages, focusing on REST APIs, integrating additional Java technologies into Domino, or moving to a standalone Java server. The document provides pros and cons of REST APIs and integrating additional Java technologies into Domino. It also discusses tools that can help with running applications on a standalone Java server while still accessing Domino data.
Hear Dan Munz, David Kennedy and Greg Boone discuss how CFPB was born, what challenges they faced and how WordPress became their CMS backbone throughout it all.
Create and upload your first Perl module to CPANbrian d foy
The document provides instructions for uploading a first module to CPAN. It discusses using PAUSE as an intermediary, getting a PAUSE account, choosing a module name, creating the distribution, uploading modules early and often, using CPAN search, and ways to publicize and get help for modules.
Capital One transitioned to DevOps by starting with a SWAT team that automated builds, deployments, and infrastructure for two applications. This improved speed and removed handoffs. Challenges included trying to automate everything at once and handoffs when automation was returned to application teams. Key lessons included focusing on automation and API's, reducing handoffs, avoiding silos, and delivering working solutions over perfection.
Cloud Academy Webinar: Recipe for DevOps Success: Capital One StyleMark Andersen
Capital One transitioned to a DevOps model to improve speed of delivery and reduce handoffs between teams. They started with a SWAT team that automated builds, deployments, and infrastructure for two applications. This proved successful and they expanded automation to more applications. Challenges included trying to automate everything at once and handoffs when automation was returned to application teams. Key lessons included focusing on automation, removing handoffs, training application teams on automation, and delivering working solutions incrementally rather than waiting for perfection.
Big ideas in small packages - How microservices helped us to scale our visionSebastian Schleicher
Blinkist started as a monolith application but transitioned to microservices as the business scaled. This allowed each part of the application to scale independently and improved development speed. Key learnings included only migrating existing features if it provided value, embracing AWS vendor lock-in while acting wisely, and building new features as microservices adhering to standards like JSON API. The monolith validated their product vision while microservices helped scale the business through a stable, automated infrastructure.
The document discusses the open web and provides definitions of key concepts. It describes the open web as stemming from a common philosophical approach of open specifications, having open source reference implementations, and involving public participation in evolution. Web standards like HTML, CSS, and JavaScript that have broad browser support are provided as examples. Open specifications like OpenID, Microformats, and OAuth that work together in a modular way are also discussed. Examples are given of how URLs and APIs can be open and readable. The document advocates for using these open web technologies and standards to make content and data more accessible and to better connect users.
When you treat docs like code, you multiply everyone’s efforts and streamline processes through collaboration, automation, and innovation. The benefits are real, but these efforts are complex. The ways you can leverage developer process and tools vary widely. Let’s unpack the absolute best situation for using a docs as code model.
Then, we can walk through multiple considerations that may point you in one direction or another. We can talk about version control, publishing, REST API considerations, source formats, automation, quality controls and testing, and lessons learned. Let’s study best practices that are outcome-dependent and situational, creating strategic efforts.
The Web moves fast, really fast. No one talks about what version of a web site you are using. Maybe you are using the beta version. Even then, it is always new. The Web is obsessed with new. It thrives on new. To meet this demand, in the early years of the web, teams learned a new way to deploy their software. Rather than the traditional models used by compiled, installed software, these pioneers on the Internet deployed software when it was ready. That meant Web sites could be responsive to changes, fix bugs quickly, and add new features to compete with the market. This method is still alive today. Successful web companies still do this to keep their advantage. While there are no set rules, there are good examples of what others do and how it helps them be successful.
Cross-Build Injection attacks are a completely new class of attacks that take place at build time. In this presentation (which was presented at JavaOne 2012) I show what the problem is and what can be done about. As always, security doesn't come for free: you'll have to work to get it right!
(unfortunately, some graphics got mangled by the SlideShare conversion. Sorry!)
This document discusses enhancing the customer ownership experience with Mercury Outboard engines. It provides details on how Mercury fits the increasing demand for more reliable, efficient, and higher performing engines. The summary highlights Mercury's focus on improving reliability, performance, and the maintenance experience over the long term.
Engage 2019: Modernising Your Domino and XPages Applications Paul Withers
This document discusses modernizing Domino and XPages applications. It covers modernizing web and mobile interfaces, using Dynamic Query Language for improved performance, and integrating applications via REST APIs. The document provides examples and considerations for updating applications' user interfaces, database design, and integration to meet modern needs and habits while leveraging new platform capabilities.
Vert.x is a toolkit for building reactive applications on the JVM. It was awarded for 'Most Innovative Java Technology' at the JAX Innovation awards. Vert.x is event driven, non blocking and polyglot, which makes it an excellent platform for building microservices. In this talk, I’ll share experiences and real-world use cases from a Dutch company that started building reactive web applications with Vert.x about 4 years ago. You’ll learn the concepts behind Vert.x, why we chose Vert.x, how we’re using it and the challenges we faced. Topics include the anatomy of our projects, (micro)services architecture, deployment model and DevOps, scalability, the upgrade from Vert.x 2 to Vert.x 3 and cooperation with the team behind Vert.x. At the end of this session, you’ll know enough about Vert.x to get started yourself right away!
This document discusses open source software (OSS) and provides advice for overcoming cultural resistance to using OSS in organizations. It notes common objections from management like concerns over cost, security, and support. It recommends starting small with non-critical projects, emphasizing quality open source options, and educating management on OSS licensing models and the business benefits of OSS like faster innovation and attracting technical talent.
DevOps is a set of practices intended to reduce the time between committing a change to a system and deploying it to production while ensuring high quality. It focuses on bridging the gap between developers and operations teams. Key DevOps principles include systems thinking, amplifying feedback loops, and a culture of experimentation. DevOps aims to achieve continuous delivery through practices like automated deployments, infrastructure as code, and deployment strategies like blue-green deployments and rolling upgrades.
Moving From Infrastructure Automation To True DevOpsXebiaLabs
The document discusses different approaches to implementing DevOps. It describes providing a platform where operations provides a runtime environment and applications are developed to run on that platform. It also describes integrated full-stack development teams where developers work across the entire development process. It emphasizes that there is no single right approach and organizations need to determine what works best for their context based on factors like organizational structure and software used. The goal of any approach should be quantifiable benefits like faster development and reduced costs.
GeekOut 2017 - Microservices in action at the Dutch National PoliceBert Jan Schrijver
Microservices? At the Police? Definitely!
At the Cloud, Big Data and Internet division of the Dutch National Police, 3 DevOps teams use the latest open source technology to build high tech, cloud native web applications in a private cloud. These applications are used to support various types of police work with data from open, online sources and are built using Spring Boot, Angular 4, Spark, Kafka and Jenkins 2.
In this session, I'll share our experiences and real-world use cases for microservices. I’ll explain our architecture, why we chose it, which challenges we face and what this all brings us. I’ll show how 3 teams work together on one product, loosely based on the models used by Spotify and Netflix, and I’ll talk about how we apply the principles of DevOps and Continuous Delivery. I’ll show how we handle security, build pipelines, test automation, performance tests, automated deployments and monitoring.
You’ll leave this session with an understanding of how this approach enables us to have the agility of a startup within the large Police organisation.
Alfresco DevCon 2019: Interaxo - A journey to Cloud NativeAsgeir Frimannsson
1) Interaxo is a SaaS application for managing building projects that uses Alfresco and has grown to over 1,000 tenants and 50,000 users.
2) The company transitioned to a cloud native architecture using Kubernetes, Docker, and AWS to allow for better scalability, automation, and continuous delivery in order to keep up with growth and gain strategic advantages.
3) Some guiding principles of the cloud native transition included treating their datacenter as a cloud provider, adopting Kubernetes gradually through proof of concepts, and using GitOps over complex Jenkins pipelines for configuration and deployments.
Making the case for Play Framework and Scala- Budapest Ping-Conf (2014)ajevans
This document summarizes the re-architecture of the CBeebies children's website using the Play framework. It describes the issues with the previous PHP-based system, how a spike using Play demonstrated benefits, and the iterative process of migrating the team and application to the new Scala/Play stack. Key steps included standing up a prototype, recruiting new developers, splitting work into modular sections, and releasing iteratively to production on AWS. Challenges included transitioning the existing team to a new language and framework and managing risks of the significant technical change.
Engage 2019 - De04. Java with Domino After XPagesJesse Gallagher
This document discusses paths forward for developers using Java and XPages with Domino after HCL's acquisition. It outlines that XPages introduced Java development to Domino but faced limitations. Going forward, options include returning to LotusScript, using Node.js, continuing with XPages, focusing on REST APIs, integrating additional Java technologies into Domino, or moving to a standalone Java server. The document provides pros and cons of REST APIs and integrating additional Java technologies into Domino. It also discusses tools that can help with running applications on a standalone Java server while still accessing Domino data.
Hear Dan Munz, David Kennedy and Greg Boone discuss how CFPB was born, what challenges they faced and how WordPress became their CMS backbone throughout it all.
Create and upload your first Perl module to CPANbrian d foy
The document provides instructions for uploading a first module to CPAN. It discusses using PAUSE as an intermediary, getting a PAUSE account, choosing a module name, creating the distribution, uploading modules early and often, using CPAN search, and ways to publicize and get help for modules.
Capital One transitioned to DevOps by starting with a SWAT team that automated builds, deployments, and infrastructure for two applications. This improved speed and removed handoffs. Challenges included trying to automate everything at once and handoffs when automation was returned to application teams. Key lessons included focusing on automation and API's, reducing handoffs, avoiding silos, and delivering working solutions over perfection.
Cloud Academy Webinar: Recipe for DevOps Success: Capital One StyleMark Andersen
Capital One transitioned to a DevOps model to improve speed of delivery and reduce handoffs between teams. They started with a SWAT team that automated builds, deployments, and infrastructure for two applications. This proved successful and they expanded automation to more applications. Challenges included trying to automate everything at once and handoffs when automation was returned to application teams. Key lessons included focusing on automation, removing handoffs, training application teams on automation, and delivering working solutions incrementally rather than waiting for perfection.
Big ideas in small packages - How microservices helped us to scale our visionSebastian Schleicher
Blinkist started as a monolith application but transitioned to microservices as the business scaled. This allowed each part of the application to scale independently and improved development speed. Key learnings included only migrating existing features if it provided value, embracing AWS vendor lock-in while acting wisely, and building new features as microservices adhering to standards like JSON API. The monolith validated their product vision while microservices helped scale the business through a stable, automated infrastructure.
The document discusses the open web and provides definitions of key concepts. It describes the open web as stemming from a common philosophical approach of open specifications, having open source reference implementations, and involving public participation in evolution. Web standards like HTML, CSS, and JavaScript that have broad browser support are provided as examples. Open specifications like OpenID, Microformats, and OAuth that work together in a modular way are also discussed. Examples are given of how URLs and APIs can be open and readable. The document advocates for using these open web technologies and standards to make content and data more accessible and to better connect users.
When you treat docs like code, you multiply everyone’s efforts and streamline processes through collaboration, automation, and innovation. The benefits are real, but these efforts are complex. The ways you can leverage developer process and tools vary widely. Let’s unpack the absolute best situation for using a docs as code model.
Then, we can walk through multiple considerations that may point you in one direction or another. We can talk about version control, publishing, REST API considerations, source formats, automation, quality controls and testing, and lessons learned. Let’s study best practices that are outcome-dependent and situational, creating strategic efforts.
The Web moves fast, really fast. No one talks about what version of a web site you are using. Maybe you are using the beta version. Even then, it is always new. The Web is obsessed with new. It thrives on new. To meet this demand, in the early years of the web, teams learned a new way to deploy their software. Rather than the traditional models used by compiled, installed software, these pioneers on the Internet deployed software when it was ready. That meant Web sites could be responsive to changes, fix bugs quickly, and add new features to compete with the market. This method is still alive today. Successful web companies still do this to keep their advantage. While there are no set rules, there are good examples of what others do and how it helps them be successful.
Cross-Build Injection attacks are a completely new class of attacks that take place at build time. In this presentation (which was presented at JavaOne 2012) I show what the problem is and what can be done about. As always, security doesn't come for free: you'll have to work to get it right!
(unfortunately, some graphics got mangled by the SlideShare conversion. Sorry!)
This document discusses enhancing the customer ownership experience with Mercury Outboard engines. It provides details on how Mercury fits the increasing demand for more reliable, efficient, and higher performing engines. The summary highlights Mercury's focus on improving reliability, performance, and the maintenance experience over the long term.
Working with micro-services is arguably the best part of OSGi development. However, everyone agrees that tracking service dependencies with the bare-bones OSGi API is not ideal. So, you pick one of the available dependency managers: either Declarative Services, Felix Dependency manager, Blueprint or iPojo.
But how do you pick the right one? Easy! After this shoot-out you’ll know all about the performance, usability and other aspects of the existing dependency managers. We show the strengths and weaknesses of the implementations side-by-side. How usable is the API? What about performance, does it scale beyond trivial amounts of services? Does it matter which OSGi framework you run the dependency manager in?
Make up your mind with the facts presented in this session.
This presentation explains the role of the Users for this city search engine, MultiLingualCity.com. Especially the User's situations applicable when there is added value.
Örjan Lönngren - Energianvändning kopplat till tillagningKlimatkommunerna
Hur ser elanvändningen ut i skolor och storkök och hur kan man minska den?
Inspelat vid Klimatkommunernas workshop om konsumtionens klimatpåverkan 17 juni 2010.
The document discusses the concept of owning or enclosing a language. It argues that if someone could own the English language, it would severely limit free speech and communication. The architecture used to implement currencies inherently leads to enclosure, concentrating power and wealth. Overall, the document cautions against allowing ownership of languages or architectures like currencies that can enable enclosure.
The document discusses the Accessible Rich Internet Applications (ARIA) specification which defines ways to make web content and applications more accessible to users of assistive technologies through the use of roles, states, and properties. It provides examples of how ARIA is implemented using markup to identify document structure and interactive elements, and explains how ARIA works together with HTML5 to semantically enrich content while preventing too much information from being conveyed to assistive technology users. ARIA takes precedence over conflicting HTML5 semantics to optimize for the best user experience for those using assistive technologies.
J. M. W. Turner was a renowned 19th century British landscape painter known for his historical, architectural, mountainous, pastoral and marine landscapes in his early career. In his middle years, he focused more on color than details. A turning point came in 1829 when he became absorbed with rendering color, light and atmosphere, as seen in works like Norham Castle, Sunrise from 1845.
The document discusses theories of language learning, emphasizing that learners learn best through active thinking and repetition with errors corrected immediately, rather than passive acquisition. It also notes the importance of following the sequence of hearing, speaking, reading and writing when learning a language. Theories of learning are not directly linked to descriptions of specific languages.
Enhance your microsoft bi stack to drive business user adoption slide sharewww.panorama.com
This document discusses enhancing Microsoft's business intelligence stack to drive business user adoption. It talks about the need for self-service applications, social and collaborative applications to enable more effective collaboration and faster decision making. It also discusses the challenges of the data explosion era and the need for contextual data discovery. The document then introduces Panorama Necto as a business intelligence 3.0 solution that offers advanced analytics, social BI, self-service capabilities and contextual discovery through an intelligent engine. It provides examples of Panorama Necto customers and invites the reader to try a live demo.
1. The document appears to be a collection of assignments, writing samples, and reflections from a student in Term 4 of 2009.
2. It includes summaries of the student's spelling achievements, goals, a wanted poster they created, and monster portrait description.
3. It also touches on the student's participation in athletics, use of language features in writing, and knowledge of topics like geometry, te reo, and music artists.
The document discusses the concept of owning or enclosing a language. It argues that if someone could own the English language, it would severely limit free speech and communication. The architecture used to implement currencies inherently leads to enclosure, concentrating power and wealth. Overall, the document cautions against allowing ownership of languages or architectures like currencies that can enable enclosure.
The document discusses feedback received on a music video from two audiences - a media studies class and the target audience. Feedback from both audiences highlighted that more scenes of the character at the party were wanted. While some found the narrative of taking drugs stereotypical, others felt the video avoided glamorizing drugs. The author learns that giving an open interpretation allowed new pleasures to emerge for viewers and areas for improvement, like clarifying the party scenes.
Bootstrapping your startup & building it lean: stop wasting timeJoel Gascoigne
This document summarizes techniques for bootstrapping a startup on a lean budget with no outside investment. It discusses methodologies promoted by thought leaders like Eric Ries (Lean Startup), Steve Blank (Customer Development), Sean Ellis (Product/Market Fit), and Dave McClure (Pirate Metrics). Key recommendations include developing a minimum viable product, continuously testing and iterating based on customer feedback, using metrics over opinions, and leveraging cloud services to reduce costs and focus on the core product.
1) The document discusses 7 common mistakes made when building scalable SharePoint applications. The first mistake is conflating performance and scalability, where an application may perform well for one user but not scale to support thousands of concurrent users.
2) The second mistake is using SharePoint lists as an OLTP database, as lists are not optimized for transactional data. It is better to use a custom SQL database and connect to SharePoint using provider hosted apps.
3) The seventh and final mistake discussed is failing to leverage Search, as Search provides scalable functionality for indexed data but may not be suitable for all scenarios due to indexing times.
This document provides an overview of open source software and recommendations for companies adopting open source. It discusses how open source can accelerate projects and attract talent. It profiles companies like Adobe, Netflix, Oracle, Samsung, and Microsoft that contribute to open source despite not being commonly associated with it. The document outlines how to launch an open source project, including using an open source license, README, contribution guidelines, and code of conduct. It also discusses roles in open source projects and various open source business models. The recommendations encourage companies to publish independent components on GitHub, take releases from GitHub, and create developer websites to engage with the open source community.
This document provides an overview of cloud native concepts including:
- Cloud native is defined as applications optimized for modern distributed systems capable of scaling to thousands of nodes.
- The pillars of cloud native include devops, continuous delivery, microservices, and containers.
- Common use cases for cloud native include development, operations, legacy application refactoring, migration to cloud, and building new microservice applications.
- While cloud native adoption is growing, challenges include complexity, cultural changes, lack of training, security concerns, and monitoring difficulties.
The document discusses 3 key ways that developing software for the cloud differs from traditional approaches:
1. Incremental delivery, with frequent small releases of new features rather than large periodic releases.
2. Increased automation, including automated testing and continuous integration/deployment pipelines to support more agile development and deployment.
3. Analytics of usage data to inform product decisions and ensure features are valuable to users. Developing with the cloud in mind requires rethinking processes to focus on agility, automation and data-driven insights.
This presentation will be useful to those
who would like to get acquainted with lifetime history
of successful monolithic Java application.
It shows architectural and technical evolution of one Java web startup that is beyond daily coding routine and contains a lot of simplifications, Captain Obvious and internet memes.
But this presentation is not intended for monolithic vs. micro services architectures comparison.
DevOps Fest 2020. Kohsuke Kawaguchi. GitOps, Jenkins X & the Future of CI/CDDevOps_Fest
CI/CD process has been something your DevOps engineer purpose-built for your team. But with Kubernetes & cloud-native, that’s becoming “legacy.” The rising level of platform abstraction allows all the good practices that the industry has developed over time to be integrated, hidden, and simplified behind just one practice called “GitOps.” That simplified world is what Jenkins X enables.
We will discuss GitOps, Jenkins X, and how that combination drastically simplifies cloud-native web app development. You’ll understand why traditional DevOps is not suitable in a Kubernetes and cloud-native world, explore GitOps principles and discover how they facilitate high-velocity app development.
And finally, Kohsuke will make a fool of himself by talking about the future — now that Jenkins X simplifies the CD process, where is the next frontier?
Software design with Domain-driven design Allan Mangune
The document discusses domain-driven software design and related concepts. It begins with an overview of monolithic architecture and modular monoliths. It then covers IdentityServer4 for centralized authentication. Next, it defines domain-driven design and the utility of domain models. It discusses ingredients for effective modeling like prototyping and collaboration. It also covers bounded contexts, entities, value objects, and repositories. Finally, it provides tips for optimizing entities and database operations.
Sitecore development approach evolution – destination helixPeter Nazarov
Sitecore Development Approach Evolution – Destination Helix
Sitecore officially recommended Helix as a set of overall design principles and conventions for Sitecore development around 18 month ago at SUGCON 2016 alongside with an official implementation example - Habitat. Why was it necessary? What are the benefits? Has it worked in practice? Peter Nazarov will share the outlook on why and how a combination of Sitecore Helix and Habitat benefits the business and development users of Sitecore in practice.
WTF: Where To Focus when you take over a Drupal projectSymetris
Jumping into pre-built Drupal projects sometimes requires a leap of faith as much for clients as for developers. The client is usually coming out of a bad previous business relationship and the code is not always structured according to your standards.
During this talk, Symetris will share its experience and provide tips on how to navigate these often uncharted waters. Our goal is to help you convert an uncertain client into a long term partner and have a checklist of what to look out for as developers.
Changing the Game with Cloud, Microservices, and DevOps Brian Chambers
This deck, presented at DevNexus 2017 in Atlanta, describes Chick-fil-A's approach to changing the way we deliver software to our enterprise by shifting to Cloud Native architectures, DevOps delivery models, and microservices.
Contact Brian Chambers on LinkedIn at https://www.linkedin.com/in/brian-chambers-65960168/ if there are questions
Serverless Architectures enable scalable and cost-effective apps to be built faster, so they can dramatically increase the odds of Your Startup's Success!
In "Startups + Serverless = Match made in Heaven" meetup, www.ServerlessToronto.org members discussed how to help Entrepreneurs push their businesses up to "other side of the teeterboard" (without failing) using the Serverless technologies: https://www.youtube.com/watch?v=1SqfJo47kMA
How To Use Selenium Successfully (Java Edition)Dave Haeffner
The document provides a 10 step guide to successfully using Selenium for automated testing. It begins by defining a test strategy and choosing a programming language. It then covers Selenium fundamentals like common actions and locator strategies. The next steps include writing the first test, making tests reusable and resilient, and packaging tests into a framework. It concludes by adding cross-browser execution and building an automated feedback loop through continuous integration. The goal is to write business-valuable tests that can run across browsers and be maintained by a team.
This document provides a summary of a tutorial on lean concepts and techniques for Ruby on Rails projects. The tutorial covers lean principles like minimizing effort, measuring progress, and delivering features rapidly. It discusses how concepts like the minimum viable product, continuous delivery, and kanban can help Rails projects. Examples are provided and exercises encourage participants to apply these lean ideas to sample projects. The goal is to introduce lean thinking and give attendees a starting point for making their work more efficient.
This document provides an overview of security best practices for developers. It discusses the software development lifecycle (SDLC) and phases like planning, architecture, testing, and release. It also summarizes Microsoft's recommendations for securing the SDLC, which include training, defining security requirements, threat modeling, using cryptography standards, and regularly penetration testing. The document then covers topics like how HTTP works with different request and response types, common vulnerabilities from the OWASP Top 10, and ways to test applications through penetration testing and bug bounty programs. It provides tips on applying security best practices and knowing about new vulnerabilities, and recommends securing continuous integration/continuous delivery (CI/CD) through techniques like code analysis, container hardening, and
Rapidly provisioning fresh copies of SQL databases is required for an effective Dev-Test environment. However, it can be challenging and most organizations take weeks to deliver usable data. Catalogic’s copy data management platform allows for timely, space-efficient, masked SQL DB copies. By doing so, Catalogic satisfies both infrastructure DBAs, who need automated copy provisioning, and application DBAs, who continually need fresh, secure data sets. This webinar will describe five ways Catalogic can help fix SQL Server Dev-Test problems.
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxAnoop Ashok
In today's fast-paced retail environment, efficiency is key. Every minute counts, and every penny matters. One tool that can significantly boost your store's efficiency is a well-executed planogram. These visual merchandising blueprints not only enhance store layouts but also save time and money in the process.
Massive Power Outage Hits Spain, Portugal, and France: Causes, Impact, and On...Aqusag Technologies
In late April 2025, a significant portion of Europe, particularly Spain, Portugal, and parts of southern France, experienced widespread, rolling power outages that continue to affect millions of residents, businesses, and infrastructure systems.
Andrew Marnell: Transforming Business Strategy Through Data-Driven InsightsAndrew Marnell
With expertise in data architecture, performance tracking, and revenue forecasting, Andrew Marnell plays a vital role in aligning business strategies with data insights. Andrew Marnell’s ability to lead cross-functional teams ensures businesses achieve sustainable growth and operational excellence.
Designing Low-Latency Systems with Rust and ScyllaDB: An Architectural Deep DiveScyllaDB
Want to learn practical tips for designing systems that can scale efficiently without compromising speed?
Join us for a workshop where we’ll address these challenges head-on and explore how to architect low-latency systems using Rust. During this free interactive workshop oriented for developers, engineers, and architects, we’ll cover how Rust’s unique language features and the Tokio async runtime enable high-performance application development.
As you explore key principles of designing low-latency systems with Rust, you will learn how to:
- Create and compile a real-world app with Rust
- Connect the application to ScyllaDB (NoSQL data store)
- Negotiate tradeoffs related to data modeling and querying
- Manage and monitor the database for consistently low latencies
UiPath Community Berlin: Orchestrator API, Swagger, and Test Manager APIUiPathCommunity
Join this UiPath Community Berlin meetup to explore the Orchestrator API, Swagger interface, and the Test Manager API. Learn how to leverage these tools to streamline automation, enhance testing, and integrate more efficiently with UiPath. Perfect for developers, testers, and automation enthusiasts!
📕 Agenda
Welcome & Introductions
Orchestrator API Overview
Exploring the Swagger Interface
Test Manager API Highlights
Streamlining Automation & Testing with APIs (Demo)
Q&A and Open Discussion
Perfect for developers, testers, and automation enthusiasts!
👉 Join our UiPath Community Berlin chapter: https://community.uipath.com/berlin/
This session streamed live on April 29, 2025, 18:00 CET.
Check out all our upcoming UiPath Community sessions at https://community.uipath.com/events/.
Mobile App Development Company in Saudi ArabiaSteve Jonas
EmizenTech is a globally recognized software development company, proudly serving businesses since 2013. With over 11+ years of industry experience and a team of 200+ skilled professionals, we have successfully delivered 1200+ projects across various sectors. As a leading Mobile App Development Company In Saudi Arabia we offer end-to-end solutions for iOS, Android, and cross-platform applications. Our apps are known for their user-friendly interfaces, scalability, high performance, and strong security features. We tailor each mobile application to meet the unique needs of different industries, ensuring a seamless user experience. EmizenTech is committed to turning your vision into a powerful digital product that drives growth, innovation, and long-term success in the competitive mobile landscape of Saudi Arabia.
Linux Support for SMARC: How Toradex Empowers Embedded DevelopersToradex
Toradex brings robust Linux support to SMARC (Smart Mobility Architecture), ensuring high performance and long-term reliability for embedded applications. Here’s how:
• Optimized Torizon OS & Yocto Support – Toradex provides Torizon OS, a Debian-based easy-to-use platform, and Yocto BSPs for customized Linux images on SMARC modules.
• Seamless Integration with i.MX 8M Plus and i.MX 95 – Toradex SMARC solutions leverage NXP’s i.MX 8 M Plus and i.MX 95 SoCs, delivering power efficiency and AI-ready performance.
• Secure and Reliable – With Secure Boot, over-the-air (OTA) updates, and LTS kernel support, Toradex ensures industrial-grade security and longevity.
• Containerized Workflows for AI & IoT – Support for Docker, ROS, and real-time Linux enables scalable AI, ML, and IoT applications.
• Strong Ecosystem & Developer Support – Toradex offers comprehensive documentation, developer tools, and dedicated support, accelerating time-to-market.
With Toradex’s Linux support for SMARC, developers get a scalable, secure, and high-performance solution for industrial, medical, and AI-driven applications.
Do you have a specific project or application in mind where you're considering SMARC? We can help with Free Compatibility Check and help you with quick time-to-market
For more information: https://www.toradex.com/computer-on-modules/smarc-arm-family
AI and Data Privacy in 2025: Global TrendsInData Labs
In this infographic, we explore how businesses can implement effective governance frameworks to address AI data privacy. Understanding it is crucial for developing effective strategies that ensure compliance, safeguard customer trust, and leverage AI responsibly. Equip yourself with insights that can drive informed decision-making and position your organization for success in the future of data privacy.
This infographic contains:
-AI and data privacy: Key findings
-Statistics on AI data privacy in the today’s world
-Tips on how to overcome data privacy challenges
-Benefits of AI data security investments.
Keep up-to-date on how AI is reshaping privacy standards and what this entails for both individuals and organizations.
Big Data Analytics Quick Research Guide by Arthur MorganArthur Morgan
This is a Quick Research Guide (QRG).
QRGs include the following:
- A brief, high-level overview of the QRG topic.
- A milestone timeline for the QRG topic.
- Links to various free online resource materials to provide a deeper dive into the QRG topic.
- Conclusion and a recommendation for at least two books available in the SJPL system on the QRG topic.
QRGs planned for the series:
- Artificial Intelligence QRG
- Quantum Computing QRG
- Big Data Analytics QRG
- Spacecraft Guidance, Navigation & Control QRG (coming 2026)
- UK Home Computing & The Birth of ARM QRG (coming 2027)
Any questions or comments?
- Please contact Arthur Morgan at [email protected].
100% human made.
Dev Dives: Automate and orchestrate your processes with UiPath MaestroUiPathCommunity
This session is designed to equip developers with the skills needed to build mission-critical, end-to-end processes that seamlessly orchestrate agents, people, and robots.
📕 Here's what you can expect:
- Modeling: Build end-to-end processes using BPMN.
- Implementing: Integrate agentic tasks, RPA, APIs, and advanced decisioning into processes.
- Operating: Control process instances with rewind, replay, pause, and stop functions.
- Monitoring: Use dashboards and embedded analytics for real-time insights into process instances.
This webinar is a must-attend for developers looking to enhance their agentic automation skills and orchestrate robust, mission-critical processes.
👨🏫 Speaker:
Andrei Vintila, Principal Product Manager @UiPath
This session streamed live on April 29, 2025, 16:00 CET.
Check out all our upcoming Dev Dives sessions at https://community.uipath.com/dev-dives-automation-developer-2025/.
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxshyamraj55
We’re bringing the TDX energy to our community with 2 power-packed sessions:
🛠️ Workshop: MuleSoft for Agentforce
Explore the new version of our hands-on workshop featuring the latest Topic Center and API Catalog updates.
📄 Talk: Power Up Document Processing
Dive into smart automation with MuleSoft IDP, NLP, and Einstein AI for intelligent document workflows.
TrsLabs - Fintech Product & Business ConsultingTrs Labs
Hybrid Growth Mandate Model with TrsLabs
Strategic Investments, Inorganic Growth, Business Model Pivoting are critical activities that business don't do/change everyday. In cases like this, it may benefit your business to choose a temporary external consultant.
An unbiased plan driven by clearcut deliverables, market dynamics and without the influence of your internal office equations empower business leaders to make right choices.
Getting things done within a budget within a timeframe is key to Growing Business - No matter whether you are a start-up or a big company
Talk to us & Unlock the competitive advantage
DevOpsDays Atlanta 2025 - Building 10x Development Organizations.pptxJustin Reock
Building 10x Organizations with Modern Productivity Metrics
10x developers may be a myth, but 10x organizations are very real, as proven by the influential study performed in the 1980s, ‘The Coding War Games.’
Right now, here in early 2025, we seem to be experiencing YAPP (Yet Another Productivity Philosophy), and that philosophy is converging on developer experience. It seems that with every new method we invent for the delivery of products, whether physical or virtual, we reinvent productivity philosophies to go alongside them.
But which of these approaches actually work? DORA? SPACE? DevEx? What should we invest in and create urgency behind today, so that we don’t find ourselves having the same discussion again in a decade?
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...Alan Dix
Talk at the final event of Data Fusion Dynamics: A Collaborative UK-Saudi Initiative in Cybersecurity and Artificial Intelligence funded by the British Council UK-Saudi Challenge Fund 2024, Cardiff Metropolitan University, 29th April 2025
https://alandix.com/academic/talks/CMet2025-AI-Changes-Everything/
Is AI just another technology, or does it fundamentally change the way we live and think?
Every technology has a direct impact with micro-ethical consequences, some good, some bad. However more profound are the ways in which some technologies reshape the very fabric of society with macro-ethical impacts. The invention of the stirrup revolutionised mounted combat, but as a side effect gave rise to the feudal system, which still shapes politics today. The internal combustion engine offers personal freedom and creates pollution, but has also transformed the nature of urban planning and international trade. When we look at AI the micro-ethical issues, such as bias, are most obvious, but the macro-ethical challenges may be greater.
At a micro-ethical level AI has the potential to deepen social, ethnic and gender bias, issues I have warned about since the early 1990s! It is also being used increasingly on the battlefield. However, it also offers amazing opportunities in health and educations, as the recent Nobel prizes for the developers of AlphaFold illustrate. More radically, the need to encode ethics acts as a mirror to surface essential ethical problems and conflicts.
At the macro-ethical level, by the early 2000s digital technology had already begun to undermine sovereignty (e.g. gambling), market economics (through network effects and emergent monopolies), and the very meaning of money. Modern AI is the child of big data, big computation and ultimately big business, intensifying the inherent tendency of digital technology to concentrate power. AI is already unravelling the fundamentals of the social, political and economic world around us, but this is a world that needs radical reimagining to overcome the global environmental and human challenges that confront us. Our challenge is whether to let the threads fall as they may, or to use them to weave a better future.
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...Alan Dix
CodeIgniter for Startups, cicon2010
1. CodeIgniter for
Startups
CodeIgniter Conference 2010
Joel Gascoigne
2. How I got here
• Developer for 10 years, CodeIgniter for 3
years
• Graduate of MEng Computing Systems
from University of Warwick
• Founder of OnePage
• Organiser of StartupMill events
7. People who defined my
thinking
• Eric Ries
• Steve Blank
• Sean Ellis
• Dave McClure
• Look these guys up!
8. Eric Ries
The Lean Startup
• Use of platforms enabled by open source
and free software
• Application of agile development
methodologies
• Customer-centric rapid iteration
9. Minimum Viable
Product
• That version of a new product which allows
a team to collect the maximum amount of
validated learning about customers with the
least effort
• Avoid building products nobody wants
• Probably much more minimum than you
think
10. Eric Ries
The Lean Startup
• The “pivot”
• Looking back at the beginnings of successful
companies shows they often started as a
different idea
• PayPal
• Microsoft
• Flickr
16. Eric Ries
The Lean Startup
• http://leanpub.com/startuplessonslearned/
• http://startuplessonslearned.com
19. Sean Ellis
Product/Market Fit
• Comparing results across over 100
startups, those that struggle have not
reached “Product/Market Fit”
• Sean’s metric: ask existing users how they
would feel if they could no longer use the
product. 40% very disappointed = P/M Fit
• Engage existing and target users to learn
how to make your product a “must have”
25. Dave McClure
Pirate Metrics
• More from Dave McClure:
• http://500hats.typepad.com/
26. Learning
• Embrace change, avoid assumptions
• “Pivot” & iterate through feedback loop
(Eric Ries)
• “Get out of the building” (Steve Blank)
• Strive for Product/Market Fit first (Sean
Ellis)
• Use metrics, not opinions (Dave McClure)
31. Split tests
• Test a change against an existing feature
• For example, a new landing page versus the
old one
• Show 50% of people the old one and 50%
of people the new one, and test the metrics
to decide which is better
32. Continuous
deployment
• The time taken for code to be committed
to the repository to it being live on the
production server is less than 20 minutes
• Code is passed through tests in order to
determine whether it should go live
33. What does this have to
do with CodeIgniter?
• Use of platforms enabled by open source
and free software
• Implementing the various techniques as
libraries
• Encourage the community to collaborate
34. Using CodeIgniter to
apply what we’ve learned
• Examples of using the libraries out there to
build some of the fundamental aspects of a
startup
• Implementing three key lean startup
techniques in CodeIgniter
• Three other techniques to increase the
speed around the feedback loop
35. Use of libraries in
CodeIgniter
• Elliot Haughin’s social libraries
• CloudFusion integrated as a library
• vCard library by Carlos Alcala
36. Elliot Haughin’s social
libraries
• For Twitter: simply load the library into
your controller and, authenticate with
OAuth and then you can access many
functions directly from the Twitter API. Full
of awesome. Elliot really does rock.
37. CloudFusion integrated
as a library
• Used for uploading images to Amazon S3
• Place the cloudfusion files in the libraries
directory
• Create a library by using this wrapper for a
library named aws.php:
39. vCard library
• Great library by Carlos Alcala
• Community involvement, improvements
have been made
• This is being used in an upcoming feature
for OnePage
41. Implementing three key
lean startup techniques
• Unit & acceptance testing
• Continuous deployment
• Feature flipping
42. Unit and acceptance
testing in CodeIgniter
• Based on Jamie Rumbelow’s Test Driven
Development code
• Using SimpleTest PHP testing framework
• Integrating Selenium tests and using
SauceLabs for cloud-based tests
48. Continuous
deployment
• Using Hudson as the continuous
integration server
• Convert the XML format from SimpleTest
to PHPUnit for compatibility
• Shell script to deploy to beanstalk
automatically if the tests pass
49. Continuous
deployment - the future
• Cluster immune system
• Use nagios for this - build as a library
• Tie it into Hudson and use beanstalk to
rollback if system indicates a failure
50. Feature Flipping
• A way to give certain users access to
features before deploying to the whole
userbase
• Flickr do it - http://code.flickr.com/blog/
2009/12/02/flipping-out/
51. Feature Flipping
• Leads to split testing
• Dan Horrigan has written a library -
turnstiles - http://dhorrigan.com/turnstiles/
52. Three other techniques
to speed up iteration
• Cache Cloud library
• Beanstalk for deployment
• NoSQL
53. Cache Cloud library
• A library to scan files in a directory, and
then combine and minify all files into a
single file
• Used for compressing CSS and JavaScript
• Creates a new filename each time anything
changes, so avoiding caching issues
• Saves everything to S3
54. Cache Cloud library
• To use the library
• Load it as you would any other
• Set up your CSS and JS locations
• Grab the code for your CSS and JS
HTML
55. Beanstalk for
deployment
• Beanstalk is a great tool for deployment
• Hosted SVN and Git repostories
• Hook up your hosting via FTP or SSH
• One click deployment and rollback
56. NoSQL
• In the future
• MongoDB
• Schema-less
• No more database migrations!
• High performance
• In use by Foursquare, bit.ly, Eventbrite
57. What have we learned?
• There are key differences between a
startup and a project in a large company
• Some key techniques to increase chances
of success
• Some ways to implement these techniques
• Most important thing: speed iterating
around the feedback loop in order to learn
58. How can this be
better?
• There must be many individuals working on
various “lean startup” implementations
• Proposal: bring this together into a
framework for lean startups on top of
CodeIgniter
• How do we do this?
#2: Hi everyone, I’m really excited to be here. I’m Joel Gascoigne and I run a startup called OnePage. I want to share with you how I’ve been using CodeIgniter as the framework to build OnePage.
#3: So how did I end up in front of you guys talking about CodeIgniter for Startups?
Like a lot of you guys I’m guessing, I started playing around with code when I was around 12 or 13, and I built my first website commercially when I was 15. It was a great feeling to discover I could make money doing what I considered a hobby!
So I’ve been coding for around 10 years now and that has primarily been within CodeIgniter for the last 3 years.
I went to the University of Warwick and studied Computing Systems and it was during my time working on several university projects that my thinking shifted from wanting to become a freelance developer to a strong desire to create an Internet Startup.
So that’s what I’m doing. I’m the Founder of a startup called OnePage. OnePage is your business card ‘in the cloud’, so you never run out of business cards and you can push changes to your contact details to your contacts instantly.
Since I’ve got into startups I’ve become pretty active in the startup scene and I make it to lots of the startup events in London and elsewhere, and at the start of the year I started running an event called StartupMill to encourage startups throughout the UK. There are currently events in Sheffield, Manchester and Birmingham. Chat to me afterwards if you’re interested in any of those events!
#4: And here’s my OnePage. This is what you can get for yourself if you go along to myonepage.com, it only takes a minute and you can sign up with Twitter, LinkedIn or Facebook.
Mobile apps are on the way.
#5: Anyway, enough about me (I had to go for a bit of a plug didn’t I really!)
Just in case you get bored, here’s what I’m going to be chatting about so you’ll know how much more of me you have to sit through :)
I’m going to start by talking about some of the startup methodologies and techniques I’ve discovered throughout my reading.
I’ll then talk about how we can apply some of those techniques within CodeIgniter, and I’ll show you a few examples of how that is happening within OnePage.
Finally, what I want to finish with is to hopefully spark off an idea I have for how we could collectively make creating startups a much more successful process by collaborating.
#6: As I mentioned, whilst at University I worked on a number of projects and one of the main reasons I got hooked on the idea of creating a startup was as a result of the experiences I had during these projects.
My Masters Dissertation project in 08 to 09 was a location based social network I build with 4 other Computer Science classmates. It had a web app and a mobile app and it was working nicely and was getting some decent usage within the Warwick campus. This was before Foursquare, Gowalla and Latitude existed. I was keen to continue it but my classmates were not as startup-minded as me and it did not work out. However, since then I’ve been determined to create a successful Internet startup because I know how big that could have been.
After I made my decision to pursue startups, I started reading a lot.
#7: So a lot of my time in the past year has been in reading up on other peoples’ experiences as well as actually implementing a startup.
I’m going to talk about some of the key people amongst all my reading which have been the people defining my thinking.
I’ll then summarise the key learnings I have come away with from all the reading, watching and listening I have done.
Finally, I’ll detail some of the specific techniques which make sense for startups and are recommended by these people. This will lead us nicely into the second half of my talk where I’ll work through many of the techniques and show you how they can be applied in CodeIgniter.
#8: Right now is a fantastic time to do an Internet startup as there is so much information out there to learn from. Unlike a few years ago, there are now many success stories from people who have made it through the whole process and are much better off as a result.
I’ve managed to break all this information down to 4 people who have really shaped my mindset in the last couple of years.
#9: Eric Ries is a serial entrepreneur and a venture advisor sitting on the board of a number of companies including PBWorks. He now spends a lot of his time talking at various events about what he calls the “Lean Startup”.
Eric uses the term “Lean Startup” for a new breed of startups which has been made possible by the following things recently.
Firstly, the use of open source and free software. We’re all familiar with this since CodeIgniter itself is open source. This also includes all the cloud based services out there which let you outsource parts of your startup which are not the core business elements.
Secondly, lean startups use agile development methodologies which have proven to be very successful in large companies building substantial applications.
Finally, lean startups iterate rapidly based on customer feedback and insights.
These are the 3 enablers of lean startups and the result is reduced cost and reduced time to deploy applications. Many say what cost millions in the dot com era around 2000 now costs thousands, and I believe I am showing that it can cost much less than that too. It really is a good time.
#11: One of the things Eric talks about is what he calls the “pivot”.
He defines the “pivot” as an act which happens in a startup when they realise that the initial idea is not working as well as the founders expected it would. They then make a decision to pivot the business - i.e. change part of it significantly whilst still staying in line with the core business vision. Therefore it makes sense to strive to succeed as a business rather than with a specific idea and be comfortable with changing the business if needed.
There are a number of great examples of businesses pivoting and it shows that the basis of a great business does not have to be an initial great idea, and that in fact the initial idea is of little significant as long as the founders have the tenacity to succeed and the open-mindedness to change their path if they need to in order to reach their targets.
Did you know that Flickr start out as an online game? It’s just that the photo management aspects of the game were getting the most use and the founders were clever enough to realise that that portion of the application was strong enough to stand on its own.
I’ve personally experienced this directly as OnePage has already pivoted once. Some of you might not be aware that OnePage started out as a lifestream application which aggregated all your streams from various social networks and services. Little of that remains now, and it was an important decision to drop the stream aspect of the application.
#12: Eric always describes the lean startup by describing other methodologies and always starts with the waterfall methodology.
Out of interest, who is familiar with waterfall methodology?
Right.
As I’m sure most of you are aware, the waterfall methodology is almost always a very bad methodology for software development projects. The reason is that it involves a lot of time getting everything right before you start and therefore changes later in the process are very expensive. The statistics are actually very bad, maybe worse than you might think. Apparently around ~6/10 never actually finish, that is that 4/10 finish and only a small amount of those are actually successful in terms of making profit.
However, waterfall works well for specific projects (e.g. adapting something you have built in the past) - i.e. when the Problem and Solution is known.
The nature of waterfall means that the stages are supposed to happen in a linear fashion where perhaps they would be suited to being done in parallel, and therefore it is hard to keep the stages in sync.
Also, batch size tends to grow, and larger batch sizes are harder to manage.
The unit of progress here is advancing to the next stage, and therefore it can potentially be easy to get caught up with “moving the project forward” without paying enough attention to whether what you are developing is something that users want.
#13: So agile is a better way to go.
This is one particular agile methodology called Extreme Programming.
How many of you are familiar with agile methodologies?
Cool, so what we find is that building the solution in an iterative way increases the odds that it will be successful.
The thing about agile is that it is built for when the problem is known and the solution is unknown (e.g. Payroll System).
One of the techniques is to sit a customer beside the developers whilst working, so the feedback is greatly increased.
In agile software development methodologies the unit of progress becomes “a line of working code”. We will stop writing buggy code.
It is a very effective paradigm for IT shops in big companies.
#14: However, with startups we live in a world of unknown problems and unknown solutions. In other words, we don’t know what we don’t know and we have no idea whether users or customers will want what we think they will want. In reality our idea is simply a hypothesis and must be tested.
So the idea for the lean startup methodology is to avoid spending time and money without knowing if we are making progress, since the biggest form of waste in startups is building something nobody wants.
What counts? Validated learning, for example with metrics such as activity on the web app or even better, revenue.
In order to speed up the learning, we need to reduce the size of the batches in order to move more rapidly through the feedback loop.
The unit of progress becomes validated learning about customers.
#15: So a simplified diagram of Eric Ries’ lean startup would be this.
Back to the definition of a pivot, this diagram is nice because a pivot is one full iteration of this loop.
Pivots could be small changes based on feedback or big changes taking the project in a completely new direction.
#16: And there are quite a number of techniques involved, some of which I will be going through in more detail shortly.
#17: I highly recommend either reading Eric’s blog at startuplessonslearned.com, or if you haven’t come across his work already then I’d recommend grabbing his new book which is a compilation of his many useful blog posts.
#18: The second person who has greatly influenced my thinking is Steve Blank. Steve is also a serial entrepreneur, he has built around 8 high tech companies and he is now in academia at Stanford.
Steve has been a big influence on Eric Ries and you can see here that this diagram is the addition Eric made to the agile methodology to create the lean startup.
The emphasis Steve Blank has had on me is to “get out of the building”, in other words to actually talk to people and discover what they want and where the startup needs to be taken. This is what he calls the “Search for a business” and is part of the two of his “four steps” called Customer Discovery and Customer Validation. The other two steps are for the growth of the business after what is called “Product/Market Fit” has been reached. For the startup stage we’re more interested in the steps on the left here.
#19: I highly recommend Steve Blank’s book called quite appropriately Four Steps to the Epiphany. I have only glanced through it and I will say this is not your typical business book, it is very much a book as you would expect it to be written by an academic. It is very informative but quite a hard read.
What I have read recently is a book called The Entrepreneur’s Guide to Customer Development and this book has distilled all the components of Steve Blank’s work and has created a very readable and useful book, and it even has a foreword by Steve Blank himself. This was very useful for me.
#20: We just mentioned the point at which the work in a startup changes from searching for a business model to executing a plan which is validated, and that point is referred to as “Product/Market Fit”.
The person who has really pioneered this part of startups is a guy called Sean Ellis. Sean has worked on many startups and has done a lot of research into startups. He’s worked with people such as Dropbox.
What Sean has found is that comparing results across over 100 startups, those that struggle have not reached “Product/Market Fit”. Now, for quite some time this idea of “Product/Market Fit” was quite vague and abstract, but recently Sean found a way to define it and has come up with a set of questions in a survey to determine whether Product/Market fit has been reached.
He defines Product/Market Fit as when after surveying existing customers, 40% say that they would be very disappointed if they could no longer use the product. This is when the product is seen as a “must have” rather than a “nice to have”.
I’ve recently done this with OnePage and I know I have some work to do to reach this stage. It is nice to have done it and kind of put a stake in the ground at this point. It is very easy to measure this and I will do it again in the future after a few more iterations and I’m confident I’ll reach it.
#21: In this pyramid, the bottom level is Product/Market fit, and the conclusion is that unless Product/Market Fit has been reached it is a bad idea to progress through your startup.
#22: It’s really interesting stuff, so check out Sean Ellis’ website at startup-marketing.com
#23: Right, the final guy who’s been a really big inspiration and has helped me focus is Dave McClure. I’m never going to be able to match his presentation style and I won’t even try to, but you really need to see him present his “Startup Metrics for Pirates” talk so make sure you look it up.
Dave McClure brings the importance of metrics to startups.
He talks about 5 key metrics for any startup, and here they are:
Acquisition is how you get customers to your website. In OnePage I define acquisition as someone hitting the landing page and then signing up, i.e. giving me their email. I then consider them acquired.
Activation is the user having a good first experience. For OnePage, this is that they put their name in, upload a profile picture and add at least a couple of contact points.
Retention is how many users come back to the website on a regular basis. It is obvious that Twitter and Facebook have ridiculously high retention rates for the people who do use those services.
Referral is the act of someone referring someone else to the app, and this feeds back into acquisition. For OnePage, since it is your business card and it is all about sharing that with people, referral is one of the key ones.
Revenue really is the best metric for measuring success, and that can be seen as the final step if you see these metrics as a funnel.
Obviously, the initials of these metrics spell out AARRR, hence pirate metrics :)
#24: Dave McClure has an interesting style of slides, but this is his slide for detailing all the methods for the 5 metrics. It’s actually an amazingly informative slide, I point people to it a lot.
#25: One thing people have started doing is using what Dave calls a Conversion Dashboard, and it is a table something like this detailing the key actions for users for the various metrics. What can then be done is the conversion percentages can be tracked through the system and the estimated value of each step can be traced through the app until the final goal of revenue.
I am actually trying to change my administration panel to reflect this as I think it is really powerful.
The thing about metrics is that in a world of Google Analytics it is easy to get overwhelmed by the amount of metrics out there but what I love about Dave McClure’s Pirate Metrics is that it really focuses on what is important. There’s an important difference between vanity metrics and actionable metrics.
#26: For more from Dave McClure check out his blog at 500hats.typepad.com, and like I said be sure to hear the information from himself as it is certainly an exerience.
#27: Right. I’ve very rapidly been through a lot of information there, so let’s try and reflect on what the key learning is.
Firstly, it’s important that we have a culture of embracing change and avoiding assumptions. Testing assumptions is key here.
We can learn from Eric Ries the idea of the Pivot and the importance of rapidly iterating through the feedback loop to learn from customers.
We can lern from Steve Blank how important it is to actually get out of the building, away from the tech and validating our hypotheses.
Sean Ellis has taught us to concentrate on nothing other than reaching Product/Market Fit before we advance to further steps of our startup.
Finally, in order to test our assumptions and not base our decisions on opinion, we can use the 5 metrics Dave McClure talks about.
#28: Right, if we go back to the lean startup feedback loop that has been pioneered by Eric Ries, we can see that there are a number of key techniques for this new breed of startups.
There are a lot of them, and I’m limited for time here so I’m going to go through a few of them, and then later in my talk I’ll be going through the specifics of how to apply them within CodeIgniter.
#29: So the 4 techniques I’m quickly going to describe are these.
Testing takes place at the build stage in order to consistently build bug-free code and ensure that rather than the usual trend of software becoming less reliable as time goes on, it can have a higher quality.
Cloud computing is as I’ve mentioned, the act of using cloud based services to focus on our core business competencies and outsource other aspects in order to speed up our time to deployment.
Split tests are a great way to base changes on fact rather than opinion,
and continuous deployment is a way to deploy code rapidly in order to achieve the fastest possible cycle time through the loop.
#30: Out of interest, who has come across Unit testing and Acceptance testing before?
OK, cool.
Unit testing is testing the core functions in your code. The idea here is that you create a piece of code which tests that each function in your code does what you expect it to do.
Acceptance testing is testing at a higher level, for example for the signup process.
The great thing to do with testing is to have an automated test suite which runs all the tests and reports whether they succeeded or not. What automated testing is great for is when a change somewhere in the system could affect another part of the system which you wouldn’t have thought of. It is also great for refactoring as you can refactor code quickly and the tests are in place to tell you whether you have introduced any bugs.
Testing is a tricky thing to get into the habit of, and I’m still partly along that process, but I know the value of it.
#31: Right, another of the specific techniques is cloud computing.
I see this being really great right now and even more so in the future.
What we have are cloud storage services like Amazon S3. All of the profile pictures on OnePage are on S3 and there are quite a lot and it literally costs pennies. It’s all hosted reliably by Amazon and it even uses their content delivery network which means the images are served from one of 11 locations around the world whichever is closest to the user so it is great for performance too. It simply doesn’t make sense to host your images, CSS or JavaScript anywhere else in my opinion.
Then we’ve got Cloud computing. The best examples of this are Amazon EC2 and Rackspace CloudServers. These allow us to on-demand fire up full servers (virtual machines). This means scaling our applications in the future is going to be very simple, as there are APIs and we can automatically scale up between different sized servers on EC2 or CloudServers. Prices are coming down for these services and it will soon make very little sense to deal with all the headaches of regular sysadmin.
There are a host of other cloud services which are very useful. I use cloud services for email and for acceptance testing.
#32: We’ve talked about basing our decisions on facts rather than opinion and split testing is a core way to do that.
Split testing is the act of testing a change to a feature or part of an app against what is in place right now.
Since when we change something we must expect that it will improve a certain metric (otherwise we wouldn’t do it!), it makes sense to test this assumption.
The best example is when you think of a new landing page design. With split testing, you can test the new landing page alongside the old one and check that it improves the conversion rate for the acquisition metric.
Split testing is great, but I’ve found that when you are just starting out the amount of data can affect things. I will however be detailing something which is similar to split testing that I’ve done within CodeIgniter.
#33: Continuous deployment is the final technique I’ll talk about before we get stuck into some CodeIgniter stuff. It is a crazy idea and it’s probably been the most controversial of the techniques.
The idea is that after you’ve committed code to the repository, within 20 minutes it will actually be live and users will be using it.
I’m sure you’re thinking of all the things that could go wrong.
Sound crazy? Well continuous deployment is a way to do that safely and it involves the testing I mentioned earlier. I’ll go into more of this later on.
#34: Right, so I guess that was your rapid crash course in startups. If we call that theory I’m about to get onto implementation.
Before I go on, does anyone have any questions?
Right, so what on earth does all this have to do with CodeIgniter?
Well, going back to Eric Ries’ definition of the lean startup, the first point was the use of open source platforms. I actually believe that CodeIgniter is a fantastic platform for lean startups.
The reasons are that it is very lightweight and it therefore follows the principles of “Don’t Repeat Yourself” but at the same time it doesn’t do so much that you have to start ripping parts away from it.
Also, we can take advantage of a huge number of the techniques without doing any work ourselves because of all the libraries out there.
And this of course is all enabled by the fantastic community around CodeIgniter.
#35: In this second half of my talk, I’m going to firstly go through a few quick examples of simply using libraries out there people have made to build some of the fundamental aspects of a startup. Then I’ll go into some detailed examples with code for implementing three key lean startup techniques in CodeIgniter. I’ll finish with three other techniques we can use to increase our speed around the feedback loop.
#36: Right, so there are literally hundreds of libraries out there we can use to give ourselves a head start with our startup if we choose CodeIgniter as the platform.
Firstly, we have Elliot Haughin’s social libraries. I won’t go into too much detail of this since (he’s already gone into detail of it / I think he’ll be talking about it).
Then I’ll talk about integrating a PHP library called CloudFusion into CodeIgniter to help us use Amazon Web Services and store all our images on Amazon S3.
The last library I’ll show you is a very simple vCard library which I’m using right now for a feature coming to OnePage pretty soon.
#37: OnePage makes use of Elliot’s Twitter library and it makes things so staightforward.
All we need to do is load the library in our controller with this->load->library(‘twitter’) and then do the OAuth authentication handshake (for which there is an example), and then we have access to the whole Twitter API through the call method.
For OnePage it is used for allowing users to follow the OnePage Twitter, update their status and update their website as well as for grabbing all their data from Twitter in the signup process to create their whole card auto-magically :)
#38: The second easy to implement library is called CloudFusion and it can be integrated as a library in CodeIgniter simply by grabbing the files and putting them in their own folder in the libraries directory and then creating a wrapper which will give you access to the library.
#39: Once that is done, we can do things like upload images, css and javascript to S3 and we could also do other things like even fire up EC2 instances.
This example grabs an image someone has uploaded and put’s it in an Amazon S3 bucket as a jpeg file. Being able to do all of that in just a few lines of code is really quite amazing.
#40: The third library I’m going to show you is one which I’m using for an upcoming feature in OnePage.
It’s a vCard library made by a guy called Carlos Alcala and it makes it very straightforward to create vcard format files from data.
#41: As we can see, all we need to do is place the library in our application/libraries directory and then we can just load it and pass it an array of user information, and then it’s simply one method to serve the vcard to the visitor. It really couldn’t be simpler!
#42: OK, cool, so we’ve seen how we can use the libraries out there to get moving fast. The great thing is there is so much out there that you can take and piece together to build your app that it leaves only a small amount to build yourself! I feel like a bit of a fraud but really OnePage is built on a lot of other people’s code. It’s the best way :)
However, there are a number of things I wanted to get working which are techniques of the lean startup and these weren’t available as libraries I was aware of at the time. So I’m going to run through 3 key lean startup techniques implemented in CodeIgniter. These are unit & acceptance testing and continuous deployment which I described earlier, and feature flipping which is something closely related to split testing.
#43: So, as I described earlier, the concept of automated testing is that you test that what you are coding is doing what you intend it to do.
There are a number of testing frameworks for PHP, one being PHPUnit which is popular but has not seen an update for quite some time. The more intuitive one I have found is SimpleTest which is a great framework.
Jamie Rumbelow, who is a very active member of the CodeIgniter community did some great work a while ago to integrate SimpleTest into CodeIgniter.
Along with SimpleTest for mainly unit testing and some acceptance testing where JavaScript is not required, Selenium is a great bit of software which lets you automate actual browser activity in a number of browsers.
The creators of Selenium have developed SauceLabs which is a great cloud-based Selenium service and it means that if you start to have quite a number of acceptance tests or if you want to test many browsers then it can all be done in parallel instead of a single test at a time as would be the case on a single machine. This means we can keep that speed around the feedback loop as high as possible and can learn as quickly as possible.
#47: What you end up with is a “Test Suite” which will allow you to run all of the tests.
If all the tests are passing, then you have a nice green bar, but if any tests fail then you’ll be notified and told what exactly has failed.
The great thing about this is that as you build up a lot of tests, you can automatically test that everything you have previously developed is still working as it should even when you introduce new functionality.
What we are seeing here is the HTML output of the tests, which is nice but what is very handy is that it is very easy to grab an XML output of this too. Of course once we have XML output, it becomes machine-readable and that enables us to do even more. That leads us nicely onto...
#48: What you end up with is a “Test Suite” which will allow you to run all of the tests.
If all the tests are passing, then you have a nice green bar, but if any tests fail then you’ll be notified and told what exactly has failed.
The great thing about this is that as you build up a lot of tests, you can automatically test that everything you have previously developed is still working as it should even when you introduce new functionality.
What we are seeing here is the HTML output of the tests, which is nice but what is very handy is that it is very easy to grab an XML output of this too. Of course once we have XML output, it becomes machine-readable and that enables us to do even more. That leads us nicely onto...
#49: Continuous deployment!
As I mentioned in the first half of the talk, continuous deployment is a process whereby we can deploy code live to the production server within 20 minutes of committing it to our repository.
In order to do this safely, we bring in the automated testing into the deployment process.
So what happens is that each time we commit to the repository, all the tests are automatically run. If they all pass, then we deploy to production.
Each developer has their own full local sandbox with the test suite so they can test everything before they commit.
The way this is implemented is using Hudson, which is a continuous integration server which is straight-forward to install on a server. What Hudson can do is hook into various things and then perform various actions. In our case we’re hooking into the SVN Repository to detect when there is new code, and then we automatically run all our tests. This works by taking the code from the repository, doing a full build of the application and then running the tests, which get output in XML format.
Unfortunately Hudson is setup by default to accept PHPUnit style XML and does not support the SimpleTest format.
I therefore grabbed some XSL transformation code to convert it into the correct format.
The final step of the process is to detect if the tests passed and then deploy if they did. For this, a shell script is run which then runs a bit of PHP which simply parses the XML and then uses the beanstalk API to deploy the app live to the server. I’ll explain beanstalk a little later if you’re not sure what I’m talking about.
#50: Some of you might be thinking that there are still things could go wrong, and you would be correct. There is only so much you can test in an automated fashion.
Eric Ries has a great example to describe how this could happen. He talks about a developer feeling like having a bit of fun one day and deciding to change the payment button to the same colour as the background of the website. So we just went from having a business to having a hobby!
In the future, I want to build into my continuous deployment setup what Eric Ries calls a cluster immune system. The cluster immune system monitors some key metrics such as revenue in a certain time-frame. If any metrics go outside a threshold which we expect them to be within, this too could trigger that the build is a failure. The cluster immune system then rolls back to the last working version and the development team is notified by email and must stop everything until they’ve worked out what was wrong.
#51: Feature flipping is another technique I’ve been putting into practice with OnePage which relates closely to the lean startup techniques.
Feature flipping allows you to give certain users access to features whilst restricting access for others.
When you’re doing continuous deployment, this is very useful because it means you can develop and test functionality and have it live but you can also separate the marketing launch of a feature from the development launch. This is a big advantage because a lot of problems can happen when you’re rushing to get a feature ready for deployment leading up to a big marketing splash and it’s a good idea to separate these two events.
The implementation for OnePage is very straight-forward right now, it is simply a case of storing a string of serialized features as comma separated values for each user and then translating those into an array.
Dan Horrigan has developed a library called turnstiles which incorporates this functionality and it’s definitely worth a look :)
#60: And here’s my OnePage. This is what you can get for yourself if you go along to myonepage.com, it only takes a minute and you can sign up with Twitter, LinkedIn or Facebook.
Mobile apps are on the way.