Talk given at the PHP Benelux conference in Antwerp, examining the points in the Joel Test and looking at how these suggested best practices apply to web development today
Don't Suck at Building Stuff - Mykel Alvis at Puppet Camp AltantaPuppet
ย
"Don't Suck at Building Stuff" by Mykel Alvis of MomentumSI. Talk given at Puppet Camp Atlanta 2013. Learn about upcoming Puppet Camps at http://puppetlabs.com/community/puppet-camp/
This document discusses debugging software by finding, reporting, locating, and fixing bugs. It describes different types of bugs and bugfixing steps. Tools for debugging like Bugzilla, GDB, Valgrind, Electric Fence, OProfile, and G_DEBUG are also covered. The document provides tutorials and explanations on using Bugzilla for reporting bugs and tracking issues, and using GDB for debugging programs.
A brief history of automation in Software EngineeringGeorg Buske
ย
In this talk we will discuss different levels of automation and what automation has in common with DevOps, Product Maturity and Machine learning. We will show how automation enables fast feedback and finally, while looking at an example of an observable and continuous deployable system we will show how automation can make your team more productive (while delivering more stable software and decrease time to market).
This document discusses test-driven development (TDD) and unit testing. It begins with an introduction to TDD and examples using PHPUnit. It then explores the TDD cycle, common excuses for not using TDD, and pros and cons of TDD. Next, it distinguishes unit testing from TDD and discusses unit testing frameworks like PHPUnit and SimpleTest. Finally, it provides examples of code for a simple game that could be used to learn TDD and unit testing techniques.
This document discusses continuous integration in PHP development. It explains that continuous integration helps detect problems early through immediate unit testing of all code changes. This prevents integration issues and allows developers to work incrementally with quick feedback. The document recommends writing unit tests with PHPUnit and using tools like PHP Code Sniffer to check code quality. It also discusses code coverage analysis and copy/paste detection to reduce code duplication. Finally, it provides examples of continuous integration environments like CruiseControl that can automate building and testing of PHP applications.
Behaviour Testing and Continuous Integration with Drupalsmithmilner
ย
This document discusses using Behat and Travis CI for behavior testing and continuous integration with Drupal projects. It introduces Behat as a behavior-driven development framework for writing tests in plain language. Tests are stored in feature files and powered by step definitions. Travis CI is presented as a tool to automatically run the test suite on each commit and report results. Combining Behat and Travis CI allows for testing Drupal projects at each stage of development.
This document outlines Softjourn Inc.'s user story workflow process. It discusses the differences between releases and versions, and the stages a user story goes through: start, progress, and end. Releases group together versions, which contain user stories. User stories go through analysis, development, and testing stages. Test cases are created and stored in the company's Redmine wiki to validate user stories.
TDD (Test Driven Development) is a software development technique where test cases are written before code to define desired functionality, and then code is written to pass those tests. It was created in the 1990s and focuses on writing tests first before developing code in short cycles of red-green-refactor. Benefits include fast feedback, clean code, refactoring security, and future productivity. The document provides an example of project structure when using TDD and references for further reading.
This document provides an introduction to using Git source control. It begins with scenarios demonstrating problems that can occur without source control, such as managing different file versions and merging changes from multiple developers. It then explains what source control is, highlighting Git, and the basic workflow of adding, committing, and pushing files to a Git server. The rest of the document demonstrates common Git commands like reverting files, branching, and merging branches through examples. It concludes with recommendations on Git practices and additional learning resources.
Disclaimer: the slide deck does not contain all the content, this was a mostly spoken/hands-on talk.
Code used in the talk: http://github.com/inequation/ggd
Video games are highly complex and indeterministic systems working closely to hardware. This means that sometimes the regular troubleshooting measure of setting up breakpoints just doesn't cut it.
How to filter out noise, when our breakpoint is hit dozens of thousands of times per second? Or if our bug, despite perfect reproduction rate, manifests itself in a different way each time? How to find the culprit overwriting our precious data?
This talk will present some interesting cases from the life of a game programmer along with tips and tricks to have up your sleeve when fighting them.
Leaning on the two Ts is a talk on improving code quality, personal practise and developing good habits using tools and techniques.
Attendees of this talk will learn about my experience when learning to use static analysis tools (i.e. SonarQube) and some of its features. In addition also find out how it can be used to improve your code quality and personal practice. A number of tools will also be mentioned and how to include them in your practise.
Powerpoint-like presentation sharing information from a perspective higher than just the use of tools, although no runtime implementation or live coding will be performed. Live examples might be shown depending on time constraints.
The presentation is definitely for intermediate and experienced Java developers, but also beginner developers who would like to know more about code quality and tools that can be of help. Also for those already using static analysis or other tools in anger or just casually. Especially those who would like to know how to use tools as a medium to learn from.
Video - http://www.youtube.com/watch?v=DTNejE9EraI
Code - https://gist.github.com/3386951
Pytest is a mature and comprehensive testing suite for Python projects, but it can be a little intimidating for newcomers. Where do these mysterious funcargs come from, how do parametrised tests work, and where are my xUnit-style setUp and tearDown methods?
Pytest lives by "convention over configuration" - which is great once you know what the conventions are. This talk will look at real examples of pytest in use, emphasising the features that differentiate it from nose.
We've all been faced with legacy code and often decided to rewrite, feeling it will be easier. There are many reasons this can be wrong. Adam Culp will talks about the entire journey of refactoring a legacy code base. He will begin with assessment and why, move on to planning how and when, cover execution and testing, give step-by-step examples, and even show how to manage the process effectively. Attendees will gain insight and tips on how to handle their own pile of code and refactor happy.
The document discusses quality assurance (QA) and outlines a QA recipe. It defines QA as a continuous process involving commitment, standards, testing to avoid defects, and validation. It emphasizes that QA is a team effort, not separate from development. The outlined QA recipe incorporates unit testing, functional testing like smoke and regression, performance testing, and code reviews. It concludes that creating a QA culture and seeing QA as more than just testing are important to success.
This document provides guidance on designing microservices using the Go programming language. It begins with an introduction to Go's core concepts like packages, functions, methods, structs, interfaces, errors, goroutines, and what Go does not include. It then discusses when Go is well-suited and not well-suited through examples. The document concludes with tips for designing Go microservices, including leveraging existing frameworks, using interfaces, ORM for entities, centralizing configurations, and making errors meaningful. The overall message is to understand where Go works best and mix technologies as needed while avoiding unnecessary complexity.
Daniel Davis is a software developer with 8 years of experience who now focuses on Python development and DevOps. He discusses his journey learning about unit testing and how mocking strategies can make testing easier. Mocking eliminates dependencies, allows testing of methods without return values, and helps test error handling. Various Python mocking libraries are presented. Examples show how to use mocking to test a matching algorithm in a dating app and to test a JSON reader class. The key benefits of mocking are that it simplifies unit tests by handling dependencies and verifying method behavior.
This document discusses test-driven development (TDD) with Google App Engine and Python. It introduces Testable App Engine, a Python skeleton project and toolset that makes TDD easier on App Engine. Key features include creating a virtualenv, running sanity tests, loading test data from JSON, and allowing debugging during tests. The goal is to include batteries and make TDD more approachable for newcomers through conventions. The presenter demonstrates using the tool and invites feedback to improve support for existing projects and acquire more users.
Test Driven Development Methodology and Philosophy Vijay Kumbhar
ย
A technique for building software that guides software development by writing tests. This is the philosophy and state of mind that a developer should change and start following TDD
Ryan Goulding and Colin Dixon's presentation from the 2017 Open Networking Summit on Making Strongly-typed NETCONF Usable.
NETCONF's use of strongly-typed YANG to describe device configuration makes safe and robust device configuration possible, but also exposes complexities in operation. Most deployments choose to use a controller or management system to help with issues of inventory and credential management. Further, this controller often does sanity checks to ensure that operations are likely to be successful on devices and, if not, there is useful debugging information. Frustratingly, this exposes trade-offs between relying on strict enforcement of YANG to catching errors early and more relaxed behavior to enable compatibility with imperfect NETCONF implementations in the real world. We show how we navigated these trade-offs to provide a flexible, open-source NETCONF solution that is strongly-typed and enables simple configuration changes for compatibility with imperfect NETCONF implementations.
This document discusses the importance of continuous integration and automation for software builds. It recommends setting up tasks like syntax checking, unit testing, code analysis and other quality checks to run automatically on each code change. This helps catch errors early, improves code quality over time, and makes the build process easy and repeatable. The document provides examples of tools like PHPUnit, PHPLOC and Ant that can be used to configure an automated build process for PHP projects.
This document discusses Neo4j, a graph database that provides persistence for graph data. It introduces Neo4j and compares different approaches for interacting with Neo4j from PHP, including REST API libraries like everyman/neo4jphp and object graph mapping libraries like hirevoice/neo4jphp-ogm. It also demonstrates interacting with Neo4j from PHP code.
Fernando Ike provides a document discussing DevOps anti-patterns, what DevOps is and is not, and best practices. The document includes sections on DevOps training topics, common misconceptions about DevOps roles, and advice for developers, operations, and managers implementing DevOps processes and culture. Anti-patterns discussed include using buzzwords to sell products/services, treating DevOps as only tools or processes, and prioritizing experience over problem-solving skills in hiring.
Performance profiling and testing of symfony application 2Andrew Yatsenko
ย
This document discusses performance profiling and testing of a Symfony application. It recommends using tools like the Symfony profiler toolbar, Blackfire, and logging to measure metrics like SQL query times, external API calls, memory usage, and more. Capturing these metrics during testing and in production helps identify bottlenecks in the code related to performance. The goal is to measure code quality from a performance perspective and ensure the application meets requirements for speed and responsiveness.
This document provides instructions for completing the bowling game kata exercise in both Java and JavaScript. It outlines the kata, links to the code repositories, and provides tips for setting up the development environment and executing tests in each language. The goal is to iteratively implement the kata by copying each commit exactly through test-driven development and repetition to learn how to solve problems and design solutions in the same way.
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...Geshan Manandhar
ย
Simplified gitflow has only one perpetual branch master which decreases the complexity, only one ticket can be deployed and tested in any given environment like staging or production. When only one ticket is deployed on a given environment, it is very easy to trace a problem if it occurs. As the full gitflow, master is the stable branch which can be deployed to production anytime.
The document discusses the benefits of automated testing over manual testing for software development. It notes that manual testing is boring, inefficient, and error-prone, while automated testing makes development more effective and fun by finding errors early, allowing code to be refactored with confidence, and proving that code meets specifications. The document then provides examples of different types of automated tests, such as unit tests, integration tests, and acceptance tests, that can improve the development process.
The document discusses Joel Spolsky's "Joel Test" which evaluates software development teams. It applies the test's 12 questions to PHP teams and provides recommendations. Key points include using source control, continuous integration, bug tracking, specifications, estimating tasks, and providing developers with resources to do their jobs.
This document outlines Softjourn Inc.'s user story workflow process. It discusses the differences between releases and versions, and the stages a user story goes through: start, progress, and end. Releases group together versions, which contain user stories. User stories go through analysis, development, and testing stages. Test cases are created and stored in the company's Redmine wiki to validate user stories.
TDD (Test Driven Development) is a software development technique where test cases are written before code to define desired functionality, and then code is written to pass those tests. It was created in the 1990s and focuses on writing tests first before developing code in short cycles of red-green-refactor. Benefits include fast feedback, clean code, refactoring security, and future productivity. The document provides an example of project structure when using TDD and references for further reading.
This document provides an introduction to using Git source control. It begins with scenarios demonstrating problems that can occur without source control, such as managing different file versions and merging changes from multiple developers. It then explains what source control is, highlighting Git, and the basic workflow of adding, committing, and pushing files to a Git server. The rest of the document demonstrates common Git commands like reverting files, branching, and merging branches through examples. It concludes with recommendations on Git practices and additional learning resources.
Disclaimer: the slide deck does not contain all the content, this was a mostly spoken/hands-on talk.
Code used in the talk: http://github.com/inequation/ggd
Video games are highly complex and indeterministic systems working closely to hardware. This means that sometimes the regular troubleshooting measure of setting up breakpoints just doesn't cut it.
How to filter out noise, when our breakpoint is hit dozens of thousands of times per second? Or if our bug, despite perfect reproduction rate, manifests itself in a different way each time? How to find the culprit overwriting our precious data?
This talk will present some interesting cases from the life of a game programmer along with tips and tricks to have up your sleeve when fighting them.
Leaning on the two Ts is a talk on improving code quality, personal practise and developing good habits using tools and techniques.
Attendees of this talk will learn about my experience when learning to use static analysis tools (i.e. SonarQube) and some of its features. In addition also find out how it can be used to improve your code quality and personal practice. A number of tools will also be mentioned and how to include them in your practise.
Powerpoint-like presentation sharing information from a perspective higher than just the use of tools, although no runtime implementation or live coding will be performed. Live examples might be shown depending on time constraints.
The presentation is definitely for intermediate and experienced Java developers, but also beginner developers who would like to know more about code quality and tools that can be of help. Also for those already using static analysis or other tools in anger or just casually. Especially those who would like to know how to use tools as a medium to learn from.
Video - http://www.youtube.com/watch?v=DTNejE9EraI
Code - https://gist.github.com/3386951
Pytest is a mature and comprehensive testing suite for Python projects, but it can be a little intimidating for newcomers. Where do these mysterious funcargs come from, how do parametrised tests work, and where are my xUnit-style setUp and tearDown methods?
Pytest lives by "convention over configuration" - which is great once you know what the conventions are. This talk will look at real examples of pytest in use, emphasising the features that differentiate it from nose.
We've all been faced with legacy code and often decided to rewrite, feeling it will be easier. There are many reasons this can be wrong. Adam Culp will talks about the entire journey of refactoring a legacy code base. He will begin with assessment and why, move on to planning how and when, cover execution and testing, give step-by-step examples, and even show how to manage the process effectively. Attendees will gain insight and tips on how to handle their own pile of code and refactor happy.
The document discusses quality assurance (QA) and outlines a QA recipe. It defines QA as a continuous process involving commitment, standards, testing to avoid defects, and validation. It emphasizes that QA is a team effort, not separate from development. The outlined QA recipe incorporates unit testing, functional testing like smoke and regression, performance testing, and code reviews. It concludes that creating a QA culture and seeing QA as more than just testing are important to success.
This document provides guidance on designing microservices using the Go programming language. It begins with an introduction to Go's core concepts like packages, functions, methods, structs, interfaces, errors, goroutines, and what Go does not include. It then discusses when Go is well-suited and not well-suited through examples. The document concludes with tips for designing Go microservices, including leveraging existing frameworks, using interfaces, ORM for entities, centralizing configurations, and making errors meaningful. The overall message is to understand where Go works best and mix technologies as needed while avoiding unnecessary complexity.
Daniel Davis is a software developer with 8 years of experience who now focuses on Python development and DevOps. He discusses his journey learning about unit testing and how mocking strategies can make testing easier. Mocking eliminates dependencies, allows testing of methods without return values, and helps test error handling. Various Python mocking libraries are presented. Examples show how to use mocking to test a matching algorithm in a dating app and to test a JSON reader class. The key benefits of mocking are that it simplifies unit tests by handling dependencies and verifying method behavior.
This document discusses test-driven development (TDD) with Google App Engine and Python. It introduces Testable App Engine, a Python skeleton project and toolset that makes TDD easier on App Engine. Key features include creating a virtualenv, running sanity tests, loading test data from JSON, and allowing debugging during tests. The goal is to include batteries and make TDD more approachable for newcomers through conventions. The presenter demonstrates using the tool and invites feedback to improve support for existing projects and acquire more users.
Test Driven Development Methodology and Philosophy Vijay Kumbhar
ย
A technique for building software that guides software development by writing tests. This is the philosophy and state of mind that a developer should change and start following TDD
Ryan Goulding and Colin Dixon's presentation from the 2017 Open Networking Summit on Making Strongly-typed NETCONF Usable.
NETCONF's use of strongly-typed YANG to describe device configuration makes safe and robust device configuration possible, but also exposes complexities in operation. Most deployments choose to use a controller or management system to help with issues of inventory and credential management. Further, this controller often does sanity checks to ensure that operations are likely to be successful on devices and, if not, there is useful debugging information. Frustratingly, this exposes trade-offs between relying on strict enforcement of YANG to catching errors early and more relaxed behavior to enable compatibility with imperfect NETCONF implementations in the real world. We show how we navigated these trade-offs to provide a flexible, open-source NETCONF solution that is strongly-typed and enables simple configuration changes for compatibility with imperfect NETCONF implementations.
This document discusses the importance of continuous integration and automation for software builds. It recommends setting up tasks like syntax checking, unit testing, code analysis and other quality checks to run automatically on each code change. This helps catch errors early, improves code quality over time, and makes the build process easy and repeatable. The document provides examples of tools like PHPUnit, PHPLOC and Ant that can be used to configure an automated build process for PHP projects.
This document discusses Neo4j, a graph database that provides persistence for graph data. It introduces Neo4j and compares different approaches for interacting with Neo4j from PHP, including REST API libraries like everyman/neo4jphp and object graph mapping libraries like hirevoice/neo4jphp-ogm. It also demonstrates interacting with Neo4j from PHP code.
Fernando Ike provides a document discussing DevOps anti-patterns, what DevOps is and is not, and best practices. The document includes sections on DevOps training topics, common misconceptions about DevOps roles, and advice for developers, operations, and managers implementing DevOps processes and culture. Anti-patterns discussed include using buzzwords to sell products/services, treating DevOps as only tools or processes, and prioritizing experience over problem-solving skills in hiring.
Performance profiling and testing of symfony application 2Andrew Yatsenko
ย
This document discusses performance profiling and testing of a Symfony application. It recommends using tools like the Symfony profiler toolbar, Blackfire, and logging to measure metrics like SQL query times, external API calls, memory usage, and more. Capturing these metrics during testing and in production helps identify bottlenecks in the code related to performance. The goal is to measure code quality from a performance perspective and ensure the application meets requirements for speed and responsiveness.
This document provides instructions for completing the bowling game kata exercise in both Java and JavaScript. It outlines the kata, links to the code repositories, and provides tips for setting up the development environment and executing tests in each language. The goal is to iteratively implement the kata by copying each commit exactly through test-driven development and repetition to learn how to solve problems and design solutions in the same way.
Do You Git Your Code? Follow Simplified Gitflow Branching Model to Improve Pr...Geshan Manandhar
ย
Simplified gitflow has only one perpetual branch master which decreases the complexity, only one ticket can be deployed and tested in any given environment like staging or production. When only one ticket is deployed on a given environment, it is very easy to trace a problem if it occurs. As the full gitflow, master is the stable branch which can be deployed to production anytime.
The document discusses the benefits of automated testing over manual testing for software development. It notes that manual testing is boring, inefficient, and error-prone, while automated testing makes development more effective and fun by finding errors early, allowing code to be refactored with confidence, and proving that code meets specifications. The document then provides examples of different types of automated tests, such as unit tests, integration tests, and acceptance tests, that can improve the development process.
The document discusses Joel Spolsky's "Joel Test" which evaluates software development teams. It applies the test's 12 questions to PHP teams and provides recommendations. Key points include using source control, continuous integration, bug tracking, specifications, estimating tasks, and providing developers with resources to do their jobs.
Improve the deployment process step by stepDaniel Fahlke
ย
This document summarizes steps to improve the software deployment process. It recommends using Git for deployment to enable faster switching between versions. It also discusses techniques like blue/green deployments to prevent errors from file changes during requests and maintaining two identical environments that can be switched between. The document stresses the importance of making database migrations harmless and avoiding code that doesn't work without migrations. It provides tips for measuring deployment success and reducing fear of deployments.
Best Practices in PHP Application DeploymentShahar Evron
ย
An overview of the challenges in managing the web application development lifecycle and how a correct deployment system can help. A few common deployment techniques are reviewed. In addition, some info on an upcoming Zend Server deployment feature.
RandomTest - Random Software Integration Tests That Just Work for C/C++, Java...dcieslak
ย
This document describes RandomTest.net, a tool for generating random integration tests. It discusses some limitations of traditional unit and manual testing approaches. RandomTest.net aims to minimize QA effort through test automation using random inputs and assertions to verify results. Developers embed assertions in code and RandomTest.net randomly executes code sections to detect failures. Any failed assertions are collected in a central repository. The tool currently supports C/C++, Java and PHP with more languages to come. It is open source and additional documentation can be found at randomtest.net.
This document discusses development tooling and provides an overview of the tools used at tadoยฐ for various stages of development including collaboration, development, build, test, deployment, production, and logging/monitoring. It recommends tools like Google Apps, Github, Jenkins, Gradle, AWS, Packer.io, Logstash, and CloudWatch and provides examples of how they are used at tadoยฐ for tasks like source control, continuous integration, deployment, and analytics. It also includes information about the presenter and an invitation to learn more about job opportunities at tadoยฐ.
Yet Another Continuous Integration StoryAnton Serdyuk
ย
This document describes the continuous integration process used at Startup Labs, Inc. It discusses using a single branch development model with feature flags instead of feature branches. Automated tests are run on every commit, with the goal of fast builds. Tests are run in parallel across multiple agents. Manual testing is done after automated testing. Load and migration tests are run before production deployments. The goals are agile development with small changes and frequent releases through continuous integration and deployment.
Continuous Integration with Open Source Tools - PHPUgFfm 2014-11-20Michael Lihs
ย
Presentation about open source tools to set up continuous integration and continuous deployment. Covers Git, Gitlab, Chef, Vagrant, Jenkins, Gatling, Dashing, TYPO3 Surf and some other tools. Shows some best practices for testing with Behat and Functional Testing.
How to establish ways of working that allows shifting-left of the automation ...Max Barrass
ย
Why Automate?
Your application will grow, you will not have enough hands
You are blocked by development
Hidden factory costs of bug-fix cycle
Why Shift-Left?
More people to negate massive inspections
Define measurable success early, work on good parts.
Reduce occurrence of defects
What is this got to do with Ways of working?
Unlock capacity
Make people smile
Is not
a Department
extra cost
a final oversight or a massive inspection
someone elseโs job
Is
Everyoneโs responsibility
Build into the ways of working
Everyoneโs job
Devops, the future is here, it's just not evenly distributed yet.Kris Buytaert
ย
This document discusses the DevOps movement and how operations and development teams can work more collaboratively. Some key points:
- DevOps aims to break down barriers between development and operations teams through better communication and automation.
- In the past, developers would deploy code without considering operational requirements, leading to problems once code was in production. DevOps promotes developing and deploying code as a team effort between devs and ops.
- Automating processes like configuration management, continuous integration, deployment and monitoring helps align dev and ops goals and allows more frequent, lower-risk deployments. Tools like Puppet, Chef, Jenkins and Nagios are mentioned.
- The document advocates for practices like test-driven
High Performance Software Engineering TeamsLars Thorup
ย
Based on my experiences building high performance engineering teams, this presentation focuses on the technical practices required. These practices centers around automation (build, test and deployment) and increased collaboration between Engineering and QA (TDD, exploratory testing, prioritization, feedback cycles).
This document discusses how to spend less time debugging software by implementing quality practices up front. It recommends conducting peer code reviews, where another developer reviews code changes and provides feedback before integration. Code reviews are most effective when the author pre-reviews their own code and reviewers spend 30-60 minutes on each review. The document also advocates for establishing continuous integration processes using tools like Git, Gerrit and Jenkins to automatically build and test all code commits, making bugs easier to detect and fix early. Implementing these practices can help catch up to 90% of bugs during development rather than later on, saving significant costs.
This document introduces Codeception, an open source PHP testing framework. It discusses different types of testing like unit, integration, functional, and acceptance testing. Codeception uses PHPUnit, Symfony browserkit, Selenium, and PhantomJS to test PHP applications. The document demonstrates running Codeception tests and provides examples of passing and failing tests. It also discusses how Codeception allows testing JavaScript-heavy applications using Selenium or headless testing with PhantomJS. Continuous integration and Docker/Vagrant are presented as ways to improve testing workflows.
Debugging Web Apps on Real Mobile DevicesDale Lane
ย
This document discusses debugging web apps on mobile devices. It introduces Weinre, an open-source tool that allows debugging of web content on mobile devices via a remote web interface. The document demonstrates Weinre's capabilities such as viewing and editing the DOM, using the console, and logging. It also explains how Weinre works by injecting scripts into the target web page and forwarding debugging output to its server. Alternative debugging tools for different mobile platforms are also mentioned.
Go with the Flow - A Guide to a WordPress WorkflowAnn Cascarano
ย
The document provides an overview of setting up a WordPress development workflow. It discusses using local development environments, text editors, the command line, WPCLI, Git, staging sites, and recovery strategies. The key aspects of a workflow mentioned are making edits locally, using version control to push changes to a staging site, and having backups to recover from errors before changes go live. Local development allows for faster and more flexible work, while a staging site and recovery plans prevent mistakes from affecting live sites. Overall, the document encourages beginning with one new tool, mastering it, and then incrementally improving your workflow.
Automating MySQL operations with PuppetKris Buytaert
ย
This document summarizes a presentation about automating MySQL operations with Puppet. It discusses:
- Why automation is important for consistency, security, and disaster recovery. Manual changes can introduce bugs and inconsistencies.
- Puppet is an open source configuration management tool that can be used to automate MySQL configuration, users, backups, replication, and high availability clustering with tools like Corosync/Pacemaker.
- Puppet modules define the desired state and Puppet ensures the actual state matches by making necessary changes. This provides auditability and change tracking through version control of Puppet code.
What can possibly go wrong if i dont e2 e test my packages?Juan Picado
ย
Verdaccio for E2E Testing: Donโt ruin your publishings
Juan Picado will explain how to test publishing Node.js packages in a local registry integrated in your CI.
A brief introduction to Verdaccio and then he will show us the steps to how to integrate Verdaccio in your E2E pipeline. We will see how React (create-react-app) and Angular (CLI) are using Verdaccio in production environments.
My talk for the Dutch PHP Conference, explaining the point of oauth, the mechanics of oauth2 and the various flows, and a spot of oauth1 for completeness
Web services tutorial slides from my session at DPC 2012 in Amsterdam. In this 3-hour session we built the simplest possible service, and then extended it, looking at RPC, REST and SOAP along the way.
"Best Practice in API Design" talk given at phpday 2012 in Verona, Italy. This talk aims to give the best possible advice to anyone publishing a web service of any kind.
How to get involved with an open source project using github. Shows the process of forking and cloning, a bit of a git primer, and how to submit pull requests. Also how to approach and contribute to an open source project.
Business 101 for Developers: Time and MoneyLorna Mitchell
ย
My talk "time and money" for the virtual conference Day Camp 4 Developers - teaching software professionals about softer skills, in particular business concepts. I'm a freelancer and I wanted to share the tips I have learned.
This is my talk aimed at helping teams to grow their skills and for individual developers to reach for their next stage of career development. Given in Poland at phpconpl in 2011
This document provides an overview and agenda for a web services tutorial. It discusses consuming and building web services using PHP. The topics that will be covered include: consuming simple web services using file_get_contents, cURL, and Pecl_HTTP; building RESTful and RPC services; handling HTTP requests and responses including status codes, headers, and data formats like JSON and XML; and best practices for versioning, documentation, and statelessness. Code samples are provided on the speaker's website.
Joind.in is an open source event feedback site written in PHP. As open source software, it is developed collaboratively by a community of contributors. The document provides information on how to get involved, such as reporting bugs, improving documentation, and contributing code, which should be submitted as a pull request via GitHub. It also lists some upcoming planned features and gives links for further support.
This document discusses distributed source control and how it differs from traditional centralized source control. It covers the aims of source control like maintaining a central repository and history of changes. It describes tools for distributed version control like Git, Mercurial and Bazaar. It discusses features like fast local branching and merging, and how distributed systems think in terms of snapshots rather than changesets. It also covers supporting tools for collaboration, bridging between systems, and tracking relationships between repositories.
This document provides an overview and best practices for API design. It discusses when to build an API, such as to share data between apps or give users control over their data. It covers HTTP fundamentals like requests and responses, status codes, headers, and verbs. It also discusses different service types like RPC and RESTful services. The document provides tips on design considerations for APIs like target audience, statelessness, versioning, error handling, and access control.
Full-day tutorial for the dutch php conference 2011 giving a very quick tour around all the various areas of the ZCE syllabus and some tips on the exam styles
Shows how to be an oauth consumer and provider from PHP - OAuth 1 - including handling of tokens, secrets, and handling the workflow for devices. Also covers the workflow for OAuth 2
The document provides an introduction and overview of building and consuming web services. It begins with defining what a web service is and discussing common web service architectures and types, including RESTful and RPC services. It then covers topics like HTTP, data formats like JSON and XML, and how to build a simple PHP-based web service that returns data in various formats depending on the Accept header. The document also discusses consuming web services using PHP libraries like cURL and Pecl_HTTP. It includes examples of building and consuming a SOAP web service in PHP. Finally, it discusses building RESTful web services and routing requests in PHP.
Object Oriented Programming (OOP) allows developers to organize complex programs using classes and objects. OOP uses concepts like encapsulation, inheritance and polymorphism to keep data and functionality together in objects. The basic building blocks in OOP are classes, which define the properties and methods of an object, and objects, which are instances of classes. Classes can inherit properties and methods from parent classes, and objects can be identified and compared using operators like instanceof. Magic methods allow objects to override default behavior for operations like property access, method calling and object destruction.
Inheritance allows similar classes to share a parent class and override features, improving modularity and avoiding duplication. Classes can only have one parent but can have many children classes, and inheritance can include many generations. Inheritance provides a way for classes to inherit and specialize features of other classes.
The document discusses factors to consider when determining if telecommuting will work for you, including environmental, organizational, and personal factors. It addresses expectations around telecommuting, such as others assuming your life is wonderful or that you watch TV all day. It also covers team structure, economics of telecommuting versus being an employee or freelancer, and strategies for making telecommuting successful such as staying active and iterating your approach.
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.
How Can I use the AI Hype in my Business Context?Daniel Lehner
ย
๐๐จ ๐ผ๐ ๐๐ช๐จ๐ฉ ๐๐ฎ๐ฅ๐? ๐๐ง ๐๐จ ๐๐ฉ ๐ฉ๐๐ ๐๐๐ข๐ ๐๐๐๐ฃ๐๐๐ง ๐ฎ๐ค๐ช๐ง ๐๐ช๐จ๐๐ฃ๐๐จ๐จ ๐ฃ๐๐๐๐จ?
Everyoneโs talking about AI but is anyone really using it to create real value?
Most companies want to leverage AI. Few know ๐ต๐ผ๐.
โ What exactly should you ask to find real AI opportunities?
โ Which AI techniques actually fit your business?
โ Is your data even ready for AI?
If youโre not sure, youโre not alone. This is a condensed version of the slides I presented at a Linkedin webinar for Tecnovy on 28.04.2025.
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/.
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/.
The Evolution of Meme Coins A New Era for Digital Currency ppt.pdfAbi john
ย
Analyze the growth of meme coins from mere online jokes to potential assets in the digital economy. Explore the community, culture, and utility as they elevate themselves to a new era in cryptocurrency.
Technology Trends in 2025: AI and Big Data AnalyticsInData Labs
ย
At InData Labs, we have been keeping an ear to the ground, looking out for AI-enabled digital transformation trends coming our way in 2025. Our report will provide a look into the technology landscape of the future, including:
-Artificial Intelligence Market Overview
-Strategies for AI Adoption in 2025
-Anticipated drivers of AI adoption and transformative technologies
-Benefits of AI and Big data for your business
-Tips on how to prepare your business for innovation
-AI and data privacy: Strategies for securing data privacy in AI models, etc.
Download your free copy nowand implement the key findings to improve your business.
What is Model Context Protocol(MCP) - The new technology for communication bw...Vishnu Singh Chundawat
ย
The MCP (Model Context Protocol) is a framework designed to manage context and interaction within complex systems. This SlideShare presentation will provide a detailed overview of the MCP Model, its applications, and how it plays a crucial role in improving communication and decision-making in distributed systems. We will explore the key concepts behind the protocol, including the importance of context, data management, and how this model enhances system adaptability and responsiveness. Ideal for software developers, system architects, and IT professionals, this presentation will offer valuable insights into how the MCP Model can streamline workflows, improve efficiency, and create more intuitive systems for a wide range of use cases.
Semantic Cultivators : The Critical Future Role to Enable AIartmondano
ย
By 2026, AI agents will consume 10x more enterprise data than humans, but with none of the contextual understanding that prevents catastrophic misinterpretations.
Artificial Intelligence is providing benefits in many areas of work within the heritage sector, from image analysis, to ideas generation, and new research tools. However, it is more critical than ever for people, with analogue intelligence, to ensure the integrity and ethical use of AI. Including real people can improve the use of AI by identifying potential biases, cross-checking results, refining workflows, and providing contextual relevance to AI-driven results.
News about the impact of AI often paints a rosy picture. In practice, there are many potential pitfalls. This presentation discusses these issues and looks at the role of analogue intelligence and analogue interfaces in providing the best results to our audiences. How do we deal with factually incorrect results? How do we get content generated that better reflects the diversity of our communities? What roles are there for physical, in-person experiences in the digital world?
HCL Nomad Web โ Best Practices and Managing Multiuser Environmentspanagenda
ย
Webinar Recording: https://www.panagenda.com/webinars/hcl-nomad-web-best-practices-and-managing-multiuser-environments/
HCL Nomad Web is heralded as the next generation of the HCL Notes client, offering numerous advantages such as eliminating the need for packaging, distribution, and installation. Nomad Web client upgrades will be installed โautomaticallyโ in the background. This significantly reduces the administrative footprint compared to traditional HCL Notes clients. However, troubleshooting issues in Nomad Web present unique challenges compared to the Notes client.
Join Christoph and Marc as they demonstrate how to simplify the troubleshooting process in HCL Nomad Web, ensuring a smoother and more efficient user experience.
In this webinar, we will explore effective strategies for diagnosing and resolving common problems in HCL Nomad Web, including
- Accessing the console
- Locating and interpreting log files
- Accessing the data folder within the browserโs cache (using OPFS)
- Understand the difference between single- and multi-user scenarios
- Utilizing Client Clocking
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.
Procurement Insights Cost To Value Guide.pptxJon Hansen
ย
Procurement Insights integrated Historic Procurement Industry Archives, serves as a powerful complement โ not a competitor โ to other procurement industry firms. It fills critical gaps in depth, agility, and contextual insight that most traditional analyst and association models overlook.
Learn more about this value- driven proprietary service offering here.
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.
Book industry standards are evolving rapidly. In the first part of this session, weโll share an overview of key developments from 2024 and the early months of 2025. Then, BookNetโs resident standards expert, Tom Richardson, and CEO, Lauren Stewart, have a forward-looking conversation about whatโs next.
Link to recording, presentation slides, and accompanying resource: https://bnctechforum.ca/sessions/standardsgoals-for-2025-standards-certification-roundup/
Presented by BookNet Canada on May 6, 2025 with support from the Department of Canadian Heritage.
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.
Generative Artificial Intelligence (GenAI) in BusinessDr. Tathagat Varma
ย
My talk for the Indian School of Business (ISB) Emerging Leaders Program Cohort 9. In this talk, I discussed key issues around adoption of GenAI in business - benefits, opportunities and limitations. I also discussed how my research on Theory of Cognitive Chasms helps address some of these issues
Spark is a powerhouse for large datasets, but when it comes to smaller data workloads, its overhead can sometimes slow things down. What if you could achieve high performance and efficiency without the need for Spark?
At S&P Global Commodity Insights, having a complete view of global energy and commodities markets enables customers to make data-driven decisions with confidence and create long-term, sustainable value. ๐
Explore delta-rs + CDC and how these open-source innovations power lightweight, high-performance data applications beyond Spark! ๐
2. Who am I?
โ
Lorna Mitchell
โ
PHP Developer at Ibuildings
โ
Editor at http://techportal.ibuildings.com
โ
Host at DPC 2010
โ
Personal site http://lornajane.net
โ
Twitter: @lornajane
3. Who is Joel?
โ
Joel Spolsky
โ
Founder of Fog Creek Software
โ
Blogs at http://joelonsoftware.com
โ
Author of numerous books, particularly Best
Software Writing
โ
Co-founder of http://stackoverflow.com
4. What is the Joel Test?
โ
12 questions about your organisation
โ
"... a highly irresponsible, sloppy test to rate the
quality of a software team"
โ
Rule-of-thumb for best practice
โ
How does it apply to PHP?
5. The Joel Test (1-6)
โ
Do you use source control?
โ
Can you make a build in one step?
โ
Do you make daily builds?
โ
Do you have a bug database?
โ
Do you fix bugs before writing new code?
โ
Do you have an up-to-date schedule?
6. The Joel Test (7-12)
โ
Do you have a spec?
โ
Do programmers have quiet working
conditions?
โ
Do you use the best tools money can buy?
โ
Do you have testers?
โ
Do new candidates write code during their
interview?
โ
Do you do hallway usability testing?
7. What is the Joel Test For?
โ
Scoring your current organisation
โ
Improving your current organisation
โ
Scoring your next organisation
http://jobs.joelonsoftware.com
21. Deployment
โ
Automated deployment
โ
upload code
โ
apply database patches
โ
handle uploaded files and existing database
โ
populate caches
โ
switch over to new version
โ
Automated rollback
22. Continuous Integration
โ
A running process
โ
Responds to commit (and/or hooks)
โ
Performs tasks
โ
No "forgetting" to run the tests
โ
Gives feedback
31. Joel Says
โ
Keep bugs near to zero
โ
Cannot estimate bug fix time
โ
Minimise unknowns
32. Capturing Bugs
โ
As a minimum, record bug
โ
Buggy behaviour
โ
Expected behaviour
โ
Smallest possible replication case
33. How to Report a Bug
http://tinyurl.com/8vx3s
โ
http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
if a computer does anything unexpected, freeze
Try to remember as much detail as
it's not worth reporting that the you can about what you were doing to
program generated an error it when it did fall over, and if you see
unless you can also report what any patterns, mention them. Anything
the error message was. you can provide has to be some help.
Some of the worst bug reports I've ever
seen come from programmers
36. Scheduling Workflow
collect
requirements
write separate into
specification discrete tasks
estimate task
duration
37. Who Estimates?
โ
Ideally the do-er
โ
At least someone who could do it
โ
Never cut estimates
38. Specification
โ
Holds the information needed for each task
โ
May include acceptance criteria
โ
More detail means fewer misunderstandings
โ
mockups/pictures
โ
form fields
39. Schedule
โ
What each person is doing
โ
When it is due to finish
โ
Can record progress/actions
โ
What is next
40. Agile and Timings
โ
Agile development is reactive
โ
Always on time at start of sprint
โ
Estimates and spec detail can
be prepared per sprint
41. Burndown Charts
โ
List of tasks
โ
Tasks have estimates
โ
Sprint is as many tasks as you have man-hours
61. Assessing Candidate Code
โ
During interview
โ
As part of recruitment process
โ
Ibuildings uses this
โ
The coding task makes a big impression on the
candidate