This document summarizes Mike Toppa's presentation on dependency injection for WordPress plugin development. Toppa discussed clean code principles like the single responsibility principle and dependency inversion principle. He explained how to implement dependency injection through constructor or setter injection. Toppa also showed an example of his Shashin photo plugin, which uses dependency injection and follows clean code practices through its object-oriented design.
Remote first team interactions with Team Topologies - IT Revolution webinar -...Matthew Skelton
From a webinar run by IT Revolution Press on 29 April 2020.
Remote-first work is the "new normal" for companies around the world. There is no shortage of advice on how individual teams can bond and work effectively remotely.
However, there is not much on how to address remote interactions between different teams that need to collaborate remotely, as part of the same value stream. Moving from the physical to the online world can further expose pre-existing interaction problems, increase wait times and slow down delivery and possibly response to incidents.
Based on the ideas from Team Topologies, Manuel Pais and Matthew Skelton will present some useful approaches to clarify and evolve inter-team interactions and communication in this remote-first world.
Designing Team APIs and virtual communication channels that promote relevant team interactions while minimizing communication overhead will help modern organizations keep a fast flow of delivery once they're past the initial adaptation to teleworking.
Following well-defined interaction patterns and architecting for team-first software boundaries will also help reduce communication overhead, clarify expectations on teams, and increase visibility of on-going work and support.
This document discusses agile estimation and planning techniques. It recommends estimating tasks relatively using story points rather than absolute time estimates. Planning poker, where teams privately estimate tasks and then discuss estimates, is presented as an effective technique. Prioritizing a backlog by value, risk, and estimate allows teams to focus on the most important work. Iterative planning within sprints and tracking progress via burn down charts increases transparency.
Learn to use the user story backlog as a way to describe user’s experience with your product.
Section 1: Importance of Product Owners Roll.
Identifying Scrum’s Product Owners roll.
Diagrammatic representation of PO Activities.
Diagrammatic representation of Product Feature Development tracks.
Section 2: User stories & Product Backlog Management.
Agile User Stories overview .
Acceptance Criteria.
Backlog Management.
Section 3: Project Scope, Product Backlog and Story Mapping.
User Story Mapping Steps.
Story Mapping example with valuable releases.
Benefits of User Story Mapping.
Enterprise Agile Metrics: A GQM ApproachLeadingAgile
Ever feel like you're doing metrics wrong? Well, you probably are! Join us and up your game by learning the GQM approach to Agile metrics.
In Agile, there is a need to collect data to demonstrate progress and show improvement, but where does one even start? Common Agile metrics approaches do well at measuring team velocity and throughput, but can sometimes overlook the requirements of executive sponsors, product management, and other key stakeholders. This problem is often rooted in a lack of understanding about what business goals are driving decision-making throughout the organization and what questions we should be answering with the metrics we collect.
The “Goal-Question-Metric” (GQM) approach is a proven method for driving goal-oriented measures throughout a software organization. With GQM, we start by defining the goals we are trying to achieve, then ask clarifying questions around those goals, and finally answer our questions through objective metrics. By mapping business outcomes and goals to specific measures, we can form a better picture of the Agile environment and clearly demonstrate how we are doing across the span of the enterprise.
During this session, we will explore the GQM approach and show its effectiveness in identifying the key information your enterprise needs to know at the Executive, Portfolio, Program, and Delivery tiers. We will provide sample metric sets for each tier and explain the goals and questions that drove us to them. At the end of this talk, the audience will understand not only how to ask the right questions, but specifically what metrics can be used to answer them.
Tracxn - Top Business Models Report - Real Estate and Construction Tech - Sep...Tracxn
Tracxn's proprietary #taxonomy brings to you top #BusinessModels in Real Estate and Construction Tech rebrand.ly/dnvw64r
Get our free reports on #PracticeArea or #sector of your interest to your mailbox regularly https://rb.gy/cx2upn
The document promotes software that helps managers become better at their jobs by providing insights into employee satisfaction and engagement. It notes that people often leave their managers, not companies, and that the software makes users better managers. It highlights that over 395 managers are already paying customers and provides contact information to learn more about the company's CEO and products for managers.
Remote first team interactions with Team Topologies - IT Revolution webinar -...Matthew Skelton
From a webinar run by IT Revolution Press on 29 April 2020.
Remote-first work is the "new normal" for companies around the world. There is no shortage of advice on how individual teams can bond and work effectively remotely.
However, there is not much on how to address remote interactions between different teams that need to collaborate remotely, as part of the same value stream. Moving from the physical to the online world can further expose pre-existing interaction problems, increase wait times and slow down delivery and possibly response to incidents.
Based on the ideas from Team Topologies, Manuel Pais and Matthew Skelton will present some useful approaches to clarify and evolve inter-team interactions and communication in this remote-first world.
Designing Team APIs and virtual communication channels that promote relevant team interactions while minimizing communication overhead will help modern organizations keep a fast flow of delivery once they're past the initial adaptation to teleworking.
Following well-defined interaction patterns and architecting for team-first software boundaries will also help reduce communication overhead, clarify expectations on teams, and increase visibility of on-going work and support.
This document discusses agile estimation and planning techniques. It recommends estimating tasks relatively using story points rather than absolute time estimates. Planning poker, where teams privately estimate tasks and then discuss estimates, is presented as an effective technique. Prioritizing a backlog by value, risk, and estimate allows teams to focus on the most important work. Iterative planning within sprints and tracking progress via burn down charts increases transparency.
Learn to use the user story backlog as a way to describe user’s experience with your product.
Section 1: Importance of Product Owners Roll.
Identifying Scrum’s Product Owners roll.
Diagrammatic representation of PO Activities.
Diagrammatic representation of Product Feature Development tracks.
Section 2: User stories & Product Backlog Management.
Agile User Stories overview .
Acceptance Criteria.
Backlog Management.
Section 3: Project Scope, Product Backlog and Story Mapping.
User Story Mapping Steps.
Story Mapping example with valuable releases.
Benefits of User Story Mapping.
Enterprise Agile Metrics: A GQM ApproachLeadingAgile
Ever feel like you're doing metrics wrong? Well, you probably are! Join us and up your game by learning the GQM approach to Agile metrics.
In Agile, there is a need to collect data to demonstrate progress and show improvement, but where does one even start? Common Agile metrics approaches do well at measuring team velocity and throughput, but can sometimes overlook the requirements of executive sponsors, product management, and other key stakeholders. This problem is often rooted in a lack of understanding about what business goals are driving decision-making throughout the organization and what questions we should be answering with the metrics we collect.
The “Goal-Question-Metric” (GQM) approach is a proven method for driving goal-oriented measures throughout a software organization. With GQM, we start by defining the goals we are trying to achieve, then ask clarifying questions around those goals, and finally answer our questions through objective metrics. By mapping business outcomes and goals to specific measures, we can form a better picture of the Agile environment and clearly demonstrate how we are doing across the span of the enterprise.
During this session, we will explore the GQM approach and show its effectiveness in identifying the key information your enterprise needs to know at the Executive, Portfolio, Program, and Delivery tiers. We will provide sample metric sets for each tier and explain the goals and questions that drove us to them. At the end of this talk, the audience will understand not only how to ask the right questions, but specifically what metrics can be used to answer them.
Tracxn - Top Business Models Report - Real Estate and Construction Tech - Sep...Tracxn
Tracxn's proprietary #taxonomy brings to you top #BusinessModels in Real Estate and Construction Tech rebrand.ly/dnvw64r
Get our free reports on #PracticeArea or #sector of your interest to your mailbox regularly https://rb.gy/cx2upn
The document promotes software that helps managers become better at their jobs by providing insights into employee satisfaction and engagement. It notes that people often leave their managers, not companies, and that the software makes users better managers. It highlights that over 395 managers are already paying customers and provides contact information to learn more about the company's CEO and products for managers.
The document discusses how to break down large requirements into smaller, independent user stories for agile software development. It recommends following the INVEST principles to create user stories that are independent, negotiable, valuable, estimable, small, and testable. Some patterns for splitting large stories are also described, such as breaking stories into workflow steps, major efforts, business rule variations, and operations. The goal is to create functional pieces that deliver business value iteratively in a manageable way.
This document provides guidance on creating an effective investor pitch deck. It outlines common mistakes to avoid, such as including too many slides, wordy text-heavy slides, or false assumptions. The document recommends keeping the deck concise and telling a compelling story in 10-13 slides. It provides an outline for the pitch deck, including sections to describe the problem being solved, product/service, business model, team, financial projections, competition, and requesting investment. The purpose of the deck is to pique investors' interest and get them excited to learn more, rather than providing all the answers.
One of my favorite interview questions that I ask engineering candidates is to tell me about one thing they liked and one thing they disliked about the engineering culture at their previous company. I’ve interviewed over 500 people – many of them from top tech companies like Facebook, Google, Amazon, Palantir, and Dropbox – and over time, this interview question has given me a sense of what good engineers look for and what they’re trying to avoid. Reflecting back on the interview responses and on my own experiences from the past seven years working across Google, Ooyala, and Quora, I’ve distilled ten things that a team can do to build a good engineering culture.
http://www.theeffectiveengineer.com/blog/what-makes-a-good-engineering-culture
This document is an excerpt from the book "Agile For Dummies, IBM Limited Edition" which discusses agile project management principles and practices. It covers topics such as the history of agile development methods, key agile roles, how to get started with agile practices like user story creation and tracking velocity, popular agile approaches like Scrum and XP, scaling agile for large and distributed teams, and evaluating agile tools. The overall purpose is to provide readers with an introduction to agile concepts, methods, and how to implement them on projects.
The decision and process behind rewriting or re-architecting a system is often plagued with a series of problems: people always underestimate the complexity, people never fully understand the customers, system requirements constantly change out from under them, and, in almost all cases, it takes much longer than anybody can predict. As part of this workshop, we’ll look at a couple of case studies of re-architecture to gleam strategies of success from them as well as common pitfalls to avoid. This workshop should arm you with a framework by which to approach your own decisions around how to manage, maintain, and evolve your own systems:
* understanding the underlying motivations;
* developing a method for deciding whether to evolve or to rewrite;
* managing the engineering effort of re-architecture in the midst of a changing business;
* setting up metrics to understand whether you’re on course; and
* organizing the engineering team and the culture to ensure success
Functional testing vs non functional testing | Difference Between Functional ...Intellipaat
In This Video We know about what are the difference between Functional and Non Functional Testing in details.
Link : ‘ https://www.youtube.com/watch?v=v9fSH2nAxks ‘
This document summarizes Spotify's approach to scaling their operations team. It discusses how in 2011, the operations team of 5 people was overwhelmed supporting Spotify's growing services. To address this, Spotify transitioned operations staff into feature "squads", giving each squad end-to-end responsibility for their services. This reduced technical debt by standardizing each service and allowed operations knowledge to be embedded within development teams. The current approach has improved availability and reduced handoffs. However, communication across teams remains a challenge. The document advocates for a DevOps model where every engineer learns full stack skills rather than separate dev and ops roles.
Triad Magic: How Product, Design, and Engineering Work Better TogetherAtlassian
Three is a magic number when it comes to team composition at Atlassian. In fact, as early as 2013 we have been advocating Triads – teams formed around the three core areas of software development: Product, Design and Engineering.
In this session, Atlassian Product Manager, Steve King, will dissect the triad he works in and demonstrate how his team manages shared and individual responsibilities to build trust and take product changes across the finish line. He will share lessons learned along the way along with tips and tricks for forming your own successful triads.
The document discusses various product management artifacts used in Agile development such as user stories, product vision, product roadmap, product backlog, and sprint backlog. It describes how the product roadmap informs the prioritized product backlog, which contains short user stories that guide development work tracked in sprint backlogs on a sprint-by-sprint basis. Effective use of these artifacts helps ensure alignment between product strategy and development activities.
1) The document discusses lessons learned by Drew Houston, co-founder and CEO of Dropbox, about how they applied lean startup principles and grew Dropbox from 100,000 users to millions without traditional marketing.
2) Early on, Dropbox got feedback directly from users through a screencast and beta launch video which helped them learn. Their public launch focused on making users happy rather than traditional marketing plans.
3) Experiments with paid search, affiliates and other traditional tactics failed, but Dropbox continued growing through word-of-mouth as they encouraged sharing and referrals between users.
4) Dropbox's success showed that best practices don't always work and it's important to understand your market type and how your product fits
We wrote this to give you a sense of IDEO’s culture—the ties that bind us together as coworkers and as people.
Read more: http://blog.slideshare.net/2014/01/08/culturecode-what-makes-a-company-great/
Spotify was founded with an agile and lean mindset already from the start. Since then we have grown quickly as a company - and we've put a lot of effort into not only building a great product, but also building and maintaining a great culture and find new ways of working that helps us become more effective. I will share some key learnings and personal reflections from that journey.
https://tech.rakuten.co.jp/
Secure Code review - Veracode SaaS Platform - Saudi Green MethodSalil Kumar Subramony
Veracode provides the world’s leading Application Risk Management Platform. Veracode's patented and proven cloud-based capabilities allow customers to govern and mitigate software security risk across a single application or an enterprise portfolio with unmatched simplicity. Veracode was founded with one simple mission in mind: to make it simple and cost-effective for organizations to accurately identify and manage application security risk.
How to Apply Functional Safety to Autosar ECU'sRenesas America
Here's a walkthrough on how you can apply functional safety to Autostar ECU's. These functional safety features apply to ISO26262, AUTOSAR, and MICROSAR. We map out safety requirements, monitoring approaches, and a couple different interface scenarios. Finally we will finish up with E2E protection.
The goal of this presentation is to explore the most efficient way to manage the product backlog, using blitz planning, story maps (walking skeleton) and improving the quality of our stories by focusing on stronger acceptance criteria, as well as using personas. The benefit of having a better way to organize and visualize the product backlog is to improve our ability to conduct release and iteration planning, as well as produce a better product road map. By attending this session you will be better equipped to help your team and product owner work with the product backlog. As a project manager, you will be introduced to simple techniques that will help you better manage your Agile project and improve visibility to all the work.
Facebook's Official Guide to Technical Program Management CandidatesLewis Lin 🦊
This document provides an overview of the technical program manager interview process at Facebook. It outlines the 5 fundamental interview areas which will assess technical project management skills, architecture and system design abilities, program management sense, partnership and collaboration experience, and leadership qualities. Candidates should expect a full day of consecutive 45-minute interviews with technical program managers, software engineers, and product managers focusing on program management, leadership, and technical depth. The document provides details on what to expect and what the interviewers are looking for in each of the 5 interview areas.
This document summarizes the key findings of a study conducted by Newsworks and PwC on attention to different media types. The study found that traditional print and broadcast media receive more focused attention from consumers compared to digital media. Specifically, newspaper readers were more likely to regularly set time aside for newspapers, feel personally connected to them, and trust their content more than most other media. The sustained attention received made newspaper readers more likely to discuss issues they read about and be influenced regarding purchases. Overall, the study showed that traditional media with higher attention levels can have a more powerful impact on consumers than digital media with less focused attention.
WordCamp Nashville: Clean Code for WordPressmtoppa
Slides from my talk at WordCamp Nashville, including notes. Covers why clean code is important, and provides 10 tips to make your code cleaner, for WordPress and beyond
Mike Toppa gave a presentation on dependency injection in PHP. He discussed classes and objects in PHP, the SOLID principles including the single responsibility principle and dependency inversion principle. He explained class autoloading in PHP and different techniques for dependency injection including constructor injection, setter injection, and using a dependency injection container.
The document discusses how to break down large requirements into smaller, independent user stories for agile software development. It recommends following the INVEST principles to create user stories that are independent, negotiable, valuable, estimable, small, and testable. Some patterns for splitting large stories are also described, such as breaking stories into workflow steps, major efforts, business rule variations, and operations. The goal is to create functional pieces that deliver business value iteratively in a manageable way.
This document provides guidance on creating an effective investor pitch deck. It outlines common mistakes to avoid, such as including too many slides, wordy text-heavy slides, or false assumptions. The document recommends keeping the deck concise and telling a compelling story in 10-13 slides. It provides an outline for the pitch deck, including sections to describe the problem being solved, product/service, business model, team, financial projections, competition, and requesting investment. The purpose of the deck is to pique investors' interest and get them excited to learn more, rather than providing all the answers.
One of my favorite interview questions that I ask engineering candidates is to tell me about one thing they liked and one thing they disliked about the engineering culture at their previous company. I’ve interviewed over 500 people – many of them from top tech companies like Facebook, Google, Amazon, Palantir, and Dropbox – and over time, this interview question has given me a sense of what good engineers look for and what they’re trying to avoid. Reflecting back on the interview responses and on my own experiences from the past seven years working across Google, Ooyala, and Quora, I’ve distilled ten things that a team can do to build a good engineering culture.
http://www.theeffectiveengineer.com/blog/what-makes-a-good-engineering-culture
This document is an excerpt from the book "Agile For Dummies, IBM Limited Edition" which discusses agile project management principles and practices. It covers topics such as the history of agile development methods, key agile roles, how to get started with agile practices like user story creation and tracking velocity, popular agile approaches like Scrum and XP, scaling agile for large and distributed teams, and evaluating agile tools. The overall purpose is to provide readers with an introduction to agile concepts, methods, and how to implement them on projects.
The decision and process behind rewriting or re-architecting a system is often plagued with a series of problems: people always underestimate the complexity, people never fully understand the customers, system requirements constantly change out from under them, and, in almost all cases, it takes much longer than anybody can predict. As part of this workshop, we’ll look at a couple of case studies of re-architecture to gleam strategies of success from them as well as common pitfalls to avoid. This workshop should arm you with a framework by which to approach your own decisions around how to manage, maintain, and evolve your own systems:
* understanding the underlying motivations;
* developing a method for deciding whether to evolve or to rewrite;
* managing the engineering effort of re-architecture in the midst of a changing business;
* setting up metrics to understand whether you’re on course; and
* organizing the engineering team and the culture to ensure success
Functional testing vs non functional testing | Difference Between Functional ...Intellipaat
In This Video We know about what are the difference between Functional and Non Functional Testing in details.
Link : ‘ https://www.youtube.com/watch?v=v9fSH2nAxks ‘
This document summarizes Spotify's approach to scaling their operations team. It discusses how in 2011, the operations team of 5 people was overwhelmed supporting Spotify's growing services. To address this, Spotify transitioned operations staff into feature "squads", giving each squad end-to-end responsibility for their services. This reduced technical debt by standardizing each service and allowed operations knowledge to be embedded within development teams. The current approach has improved availability and reduced handoffs. However, communication across teams remains a challenge. The document advocates for a DevOps model where every engineer learns full stack skills rather than separate dev and ops roles.
Triad Magic: How Product, Design, and Engineering Work Better TogetherAtlassian
Three is a magic number when it comes to team composition at Atlassian. In fact, as early as 2013 we have been advocating Triads – teams formed around the three core areas of software development: Product, Design and Engineering.
In this session, Atlassian Product Manager, Steve King, will dissect the triad he works in and demonstrate how his team manages shared and individual responsibilities to build trust and take product changes across the finish line. He will share lessons learned along the way along with tips and tricks for forming your own successful triads.
The document discusses various product management artifacts used in Agile development such as user stories, product vision, product roadmap, product backlog, and sprint backlog. It describes how the product roadmap informs the prioritized product backlog, which contains short user stories that guide development work tracked in sprint backlogs on a sprint-by-sprint basis. Effective use of these artifacts helps ensure alignment between product strategy and development activities.
1) The document discusses lessons learned by Drew Houston, co-founder and CEO of Dropbox, about how they applied lean startup principles and grew Dropbox from 100,000 users to millions without traditional marketing.
2) Early on, Dropbox got feedback directly from users through a screencast and beta launch video which helped them learn. Their public launch focused on making users happy rather than traditional marketing plans.
3) Experiments with paid search, affiliates and other traditional tactics failed, but Dropbox continued growing through word-of-mouth as they encouraged sharing and referrals between users.
4) Dropbox's success showed that best practices don't always work and it's important to understand your market type and how your product fits
We wrote this to give you a sense of IDEO’s culture—the ties that bind us together as coworkers and as people.
Read more: http://blog.slideshare.net/2014/01/08/culturecode-what-makes-a-company-great/
Spotify was founded with an agile and lean mindset already from the start. Since then we have grown quickly as a company - and we've put a lot of effort into not only building a great product, but also building and maintaining a great culture and find new ways of working that helps us become more effective. I will share some key learnings and personal reflections from that journey.
https://tech.rakuten.co.jp/
Secure Code review - Veracode SaaS Platform - Saudi Green MethodSalil Kumar Subramony
Veracode provides the world’s leading Application Risk Management Platform. Veracode's patented and proven cloud-based capabilities allow customers to govern and mitigate software security risk across a single application or an enterprise portfolio with unmatched simplicity. Veracode was founded with one simple mission in mind: to make it simple and cost-effective for organizations to accurately identify and manage application security risk.
How to Apply Functional Safety to Autosar ECU'sRenesas America
Here's a walkthrough on how you can apply functional safety to Autostar ECU's. These functional safety features apply to ISO26262, AUTOSAR, and MICROSAR. We map out safety requirements, monitoring approaches, and a couple different interface scenarios. Finally we will finish up with E2E protection.
The goal of this presentation is to explore the most efficient way to manage the product backlog, using blitz planning, story maps (walking skeleton) and improving the quality of our stories by focusing on stronger acceptance criteria, as well as using personas. The benefit of having a better way to organize and visualize the product backlog is to improve our ability to conduct release and iteration planning, as well as produce a better product road map. By attending this session you will be better equipped to help your team and product owner work with the product backlog. As a project manager, you will be introduced to simple techniques that will help you better manage your Agile project and improve visibility to all the work.
Facebook's Official Guide to Technical Program Management CandidatesLewis Lin 🦊
This document provides an overview of the technical program manager interview process at Facebook. It outlines the 5 fundamental interview areas which will assess technical project management skills, architecture and system design abilities, program management sense, partnership and collaboration experience, and leadership qualities. Candidates should expect a full day of consecutive 45-minute interviews with technical program managers, software engineers, and product managers focusing on program management, leadership, and technical depth. The document provides details on what to expect and what the interviewers are looking for in each of the 5 interview areas.
This document summarizes the key findings of a study conducted by Newsworks and PwC on attention to different media types. The study found that traditional print and broadcast media receive more focused attention from consumers compared to digital media. Specifically, newspaper readers were more likely to regularly set time aside for newspapers, feel personally connected to them, and trust their content more than most other media. The sustained attention received made newspaper readers more likely to discuss issues they read about and be influenced regarding purchases. Overall, the study showed that traditional media with higher attention levels can have a more powerful impact on consumers than digital media with less focused attention.
WordCamp Nashville: Clean Code for WordPressmtoppa
Slides from my talk at WordCamp Nashville, including notes. Covers why clean code is important, and provides 10 tips to make your code cleaner, for WordPress and beyond
Mike Toppa gave a presentation on dependency injection in PHP. He discussed classes and objects in PHP, the SOLID principles including the single responsibility principle and dependency inversion principle. He explained class autoloading in PHP and different techniques for dependency injection including constructor injection, setter injection, and using a dependency injection container.
This document discusses logging in PHP applications using the Monolog library. It introduces Monolog and some of its key features like being PSR-3 compatible and widely used in frameworks like Symfony and Laravel. It then demonstrates how to set up different log handlers like files, Slack, and IFTTT integrations. It also covers strategies for error handling like using FingersCrossedHandler and WhatFailureGroupHandler to ensure errors are properly logged across multiple handlers.
Automated Abstraction of Flow of Control in a System of Distributed Software...nimak
This document discusses using automated introspection to analyze the performance and evolution of distributed virtualization platforms. It proposes using aspect-oriented programming to capture message exchanges in CloudFoundry. This allows generating documentation on message exchange patterns, sequences, and changes over time. Evaluating the approach with CloudFoundry developers found it helpful for understanding the system. Future work includes developing a domain-specific language for instrumentation and increasing automation.
Maurizio Pelizzone gave a presentation on WordPress hardening at WordCamp Bologna 2012. He discussed various dangers to WordPress sites like information collection, brute force attacks, and exploits. He then provided solutions like deleting readme.html, preventing user enumeration, hiding admin URLs, restricting PHP execution, using strong passwords, changing the directory structure, and using blackhole and file monitoring plugins.
Once you get the hang of the basics, it's time to dive in and start getting work done with git. In this session we will talk about branching strategies, staging your files, writing a good commit message and merge vs rebase. We will also touch on the topic of rewriting history - what it means, examples of doing it and when to avoid it at all costs.
You are working with WordPress when you find yourself in the strange, dimly lit Cave of Community. Gradually you can make out two passageways. One curves downward to the right; the other leads upward to the left.
The choices you make in the WordPress community define your WordPress adventure. I’ll share stories of decisions and outcomes I’ve seen during my three years as a WordPress community manager.
The document is a presentation about demystifying the WordPress dashboard. It discusses the difference between WordPress.com and self-hosted WordPress sites. It also provides an overview of the different dashboard menus including Media, Posts, Appearance, Plugins, and Customizer. The presentation notes that some features of the dashboard can be hidden by plugins and themes and encourages users to explore the dashboard further.
If you have tried WordPress.com and are ready to move to a self-hosted website, this presentation is for you. It will go over the basics of installing WordPress, migrating content and customizing your site.
This document discusses creating an effective site structure and navigation for a website. It emphasizes the importance of content strategy, wireframes, sitemaps and user experience. Key points include determining user audiences and their needs, creating an editorial calendar, visualizing the site flow through sitemaps and wireframes, and ensuring usability across devices including mobile. Tools recommended for sitemaps and wireframes include Powermapper, Slickplan, Gomockingbird and Balsamiq.
This talk covers ways to make your site run faster regardless of your hosting provider or host type as well as some of the commonly used plugins and caching strategies. The fucus is on RAM or the use of a Managed WordPress hosting that is already optimized for you.
An introduction to one of the greatest features of WordPress: Extensibility. Developers area able to use plugins and themes to extend the power of WordPress through a flexible set of APIs. These APIs include pluggable functions, action and filter hooks, and metadata.
Este documento explica cómo crear plugins para WordPress. Primero, se debe instalar un servidor web local y descargar WordPress. Luego, se crea una base de datos y se configura el acceso a ella. Esto permite acceder al dashboard de WordPress. El documento describe cómo crear funciones, hooks de acción, shortcodes y widgets para integrarlos en un plugin funcional. Finalmente, se proporcionan recursos adicionales para aprender más sobre el desarrollo de plugins de WordPress.
Rachel Baker presents on creating accessible and usable navigation menus for WordPress websites using CSS, jQuery, and custom walker functions. She discusses identifying the audience and their expectations, using visual cues like icons and highlighting the current page, adding descriptions to menu items, and splitting long submenus into columns. Code examples are provided for styling menus, adding relationships and descriptions, and splitting submenus with jQuery. The presentation aims to make navigation menus more intuitive and helpful for visitors.
The document discusses setting up a WordPress website for a new baby. It provides tips on creating posts about the baby's daily activities and milestones. It emphasizes documenting experiences with photos and videos. It also offers advice on choosing secure login credentials, getting help when needed, and not giving up when challenges arise while learning WordPress. Frustration is normal during the learning process which involves trial and error.
A Fantástica Fábrica de Websites - WordPressDaniel Glik
Palestra ministrada no WordCampBH 2014.
- O WordPress visto do ponto de vista de um criativo.
- Como o WordPress é uma mão na roda para agências.
- Processo criativo para websites.
- Estudo de casos.
Getting an eCommerce Site Running in 30 MinutesApptivo
This presentation was done for Wordcamp Orange County 2012 at Vanguard University.
An introduction to developing an eCommerce website, and the steps that are required to properly plan and execute the project.
Learn more at http://www.apptivo.com
The Capitalist in the Co-Op: The Art & Science of the Premium WordPress BusinessShane Pearlman
The Art & Science of "Premium"
Experience level: Intermediate(+)
Session Description: Lessons from the road making a successful & popular premium WordPress plugin. We will share the strategies we employed to be profitable and the mistakes we made while learning. The best advice I have: Be as agile with your business model as you are with your code.
* The Product: Identifying a winner?
* Bootstraping: How do I keep cost low?
* Marketing: Sell your own or join a marketplace?
* Freemium, Premium or Subscription: How do you price your product?
* Roadmap: Which features do you build?
* Support: How do you keep people happy?
* Addons & APIs: How do you leverage success?
Object Oriented Programming for WordPress Plugin Developmentmtoppa
An introduction to object oriented programming in PHP. This is applicable to WordPress and other CMS/frameworks as well. Note the last half of the slideshow contains the notes for the slides shown in the first half.
Dependency Inversion and Dependency Injection in PHPmtoppa
The document discusses dependency injection and inversion in PHP. It defines dependency injection as a design pattern for implementing dependency inversion. Dependency inversion is a principle where high-level modules should not depend on low-level modules, but both should depend on abstractions. The document provides an example of applying dependency injection and inversion to a button and lamp class. It discusses benefits like loose coupling and testability. It also discusses different patterns for implementing dependency injection like constructor injection and using an injection container.
The document discusses principles of clean code for WordPress plugin development. It defines clean code as code that is readable, maintainable and flexible. It emphasizes meaningful naming, single responsibility principle, dependency inversion principle and other SOLID principles. It also discusses design patterns like facade and independent architecture. The document provides an example of applying these principles in the Shashin photo plugin through object-oriented design, isolation of concerns and unit testing.
Using PHP Functions! (Not those functions, Google Cloud Functions)Chris Tankersley
Serverless computing has taken web development by storm, and Google has recently updated their Google Cloud Functions to support PHP 7.4! We'll walk through setting up a function and how it all works.
The WordPress way, the modern way: developing as if it were 2016lucatume
This document contains a summary of a presentation about developing WordPress projects in a modern way. Some key points discussed include:
- Following SOLID principles like the single responsibility principle and open/closed principle can help create more maintainable code.
- Adhering to patterns like dependency inversion allows code to be more flexible and extensible over time.
- While PHP 5.2 is outdated, examples will still work in PHP 5.2 to be accessible, but developers should use supported PHP versions for projects.
- "The WordPress way" is one approach but not the only valid one; developers have flexibility and responsibility over their code.
The document discusses the SOLID principles of object-oriented design, which are:
1. Single Responsibility Principle (SRP) - Each class should have a single responsibility.
2. Open-Closed Principle (OCP) - Software entities should be open for extension but closed for modification.
3. Liskov Substitution Principle (LSP) - Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it.
4. Interface Segregation Principle (ISP) - Clients shouldn't be forced to depend on interfaces that they don't use.
5. Dependency Inversion Principle (DIP) -
Big Data Beyond the JVM - Strata San Jose 2018Holden Karau
The document discusses accelerating big data processing beyond just the Java Virtual Machine (JVM). It introduces Rachel Warren and Holden Karau, the presenters. It then covers the current state of PySpark and its performance limitations due to serialization between Python and the JVM. Future improvements discussed include using Apache Arrow to accelerate UDFs, Dask for pure Python processing, and Apache Beam for additional languages. The presenters promote their new book on high performance Spark and take questions at the end.
When developers are introduced to Object Oriented Programming, one of the first things that happens is that they are taught that nouns turn into objects, verbs into methods, and Dog is a subclass of Animal. OOP is more than just turning things into classes and objects and showing that both Boats and Cars have motors, and that Dogs and Cats both speak(). Let's look at OOP in real world settings and go beyond cars and dogs, and see how to use Object Oriented Programming properly in PHP. Traits, Composition, Inheritance, none of it is off limits!
The document discusses best practices for writing reusable Django applications. It recommends:
1) Focusing each application on doing one thing well rather than trying to encompass multiple unrelated features.
2) Not being afraid to split features across multiple specialized applications rather than cramming everything into one monolithic application.
3) Writing applications to be flexible and allow for customization through overrides and settings rather than having rigid hardcoded implementations.
4) Building applications in a way that is decoupled from any specific project structure so they can be easily distributed and reused in different projects.
Modernizing Legacy Applications in PHP, por Paul JonesiMasters
Paul Jones, criador do "Aura for PHP" e autor de "Modernizing Legacy App in PHP", falou sobre 'Modernizing Legacy Applications in PHP' no iMasters PHP Experience 2015.
O iMasters PHP Experience 2015 aconteceu dia 25 de Abril de 2015, no Hotel Renaissance em São Paulo-SP - http://phpexperience.imasters.com.br/
WebCamp: Developer Day: DDD in PHP on example of Symfony - Олег ЗинченкоGeeksLab Odessa
DDD in PHP on example of Symfony
Олег Зинченко
В докладе речь пойдет о том, что такое DDD и почему MVC годами вводит нас в заблуждение. Как автор пришёл к мысли о том, что просто писать структурированный код недостаточно. Будут описаны слои приложения DDD, как они взаимодействуют между собой. Какие архитектурные паттерны стоят за DDD и почему они облегчают жизнь разработчика. Когда лучше использовать DDD, какие достоинства и недостатки есть у этого подхода. Примеры использованиея DDD подхода в Symfony приложениях.
A presentation of my talk about data migrations for Rails applications. Observed different cases, different solutions. Opinion what's the best approach.
principles of object oriented class designNeetu Mishra
The document discusses the principles of object oriented class design known as SOLID principles, which are Single Responsibility Principle (SRP), Open Closed Principle (OCP), Liskov Substitution Principle (LSP), Interface Segregation Principle (ISP), and Dependency Inversion Principle (DIP). It provides examples and explanations of each principle, with SRP focusing on a single responsibility, OCP on extension without modification, LSP on substitutability of subclasses, ISP on specific interfaces over general interfaces, and DIP on depending on abstractions rather than concretions.
Common design principles and design patterns in automation testingKMS Technology
The document discusses common design principles and patterns used in automation testing. It covers the SOLID principles: single responsibility, open/closed, Liskov substitution, interface segregation, and dependency inversion. It also discusses the DRY principle and avoiding duplicate code. For design patterns, it describes the page object model (POM) pattern for organizing web page elements and tests. It also discusses using fluent interfaces with the POM pattern. The presentation provides examples and explanations of how to apply these principles and patterns when writing automation tests.
Dependency injection is a design pattern that allows classes to have their dependencies satisfied externally rather than internally. It promotes loose coupling between classes and makes code more organized and flexible. Bean management allows the dependency injection framework to automatically instantiate objects and their dependencies rather than requiring manual setup. Inversion of control inverts traditional object creation by allowing external configuration to determine default property values and dependencies rather than coding them. Aspect oriented programming allows cross-cutting concerns like logging or error handling to be defined separately from the core functionality they apply to.
Merged Automation Talk - Pete Carapetyan - Feb 2016 petecarapetyan
This document discusses different types of automation and how they have evolved over time. It identifies seven main types: imperative, declarative, templating, implicit, design, UI, and frameworks. The document then provides examples to illustrate how certain automation types have replaced others as technologies advanced. It highlights projects like Polymer, PolyRest, Spring Boot, Spring Data, and Docker that represent shifts toward more implicit and design-based approaches over declarative configurations and templating. The document concludes with references to view the code, slides, and demo for the PolyRest project discussed.
The document provides best practices for developing with Drupal including getting Drupal from version control, updating modules, using revision control, module development practices like understanding prerequisites and hooks, input validation, avoiding direct database queries, theme development practices like available theme engines and template variables, and overriding themeable functions.
This document introduces Ruby on Rails (Rails), an open-source web application framework written in Ruby. It discusses Rails' features like MVC architecture, scaffolding to quickly generate CRUD interfaces, and use of gems. The author provides steps to install Rails and create a sample app, including generating models, views, and controllers using scaffolding and applying a Bootstrap theme. Tips are given on further customizing the generated app code and views. Rails is concluded to be a simple way to build basic CRUD apps but deeper understanding is needed for serious applications.
This document discusses object-oriented programming (OOP) principles and functional programming (FP) concepts. It covers SOLID principles like single responsibility, open/closed principles and dependency inversion. It also discusses design patterns like command and observer patterns and how they can be expressed functionally using higher-order functions. The document notes that popular programming languages have evolved from a multiparadigm approach in the 1980s to an object-oriented dominance period, and are now becoming increasingly multiparadigm again with integrated support for functional programming concepts.
Similar to Dependency Injection for Wordpress (20)
RubyConf 2022 - From beginner to expert, and back againmtoppa
"In the beginner's mind there are many possibilities, in the expert's mind there are few."
- Shunryu Suzuki, from "Zen Mind, Beginner's Mind"
The Japanese Zen term shoshin translates as “beginner’s mind” and refers to a paradox: the more you know about a subject, the more likely you are to close your mind to further learning. In contrast, the beginner’s state of mind is judgment free. It’s open, curious, available, and present. We’ll draw on examples of these mindsets from fields as varied as aviation and geology, and discover lessons we can apply to the world of software development.
RailsConf 2022 - Upgrading Rails: The Dual Boot Waymtoppa
Upgrading Rails is easy, right? Sure, as long as you are upgrading your patch version. A Rails upgrade for a big application is not a trivial project: It took GitHub a year and a half to upgrade from Rails 3.2 to 5.2.
While upgrades have become easier with every new Rails version, your application has only become more complicated with every new dependency you added.
In this workshop you will learn a proven Rails upgrade process for major and minor version changes of Rails. You will leave this workshop with a roadmap to upgrade your Rails application.
Applying Omotenashi (Japanese customer service) to your workmtoppa
This document is a transcript of a presentation given by Mike Toppa at RailsConf 2019 about applying the Japanese concept of Omotenashi (hospitality and customer service) to software development work. Toppa discusses his personal experiences in Japan through visiting with his family and shares some cultural aspects of Japan like cleanliness, orderliness, and politeness that relate to Omotenashi. He hopes to explore how concepts from Omotenashi could provide value for software teams to evolve beneficial practices.
I gave this as a lightning talk at Boston.rb on 7/14//2015. It's a discussion of the challenges of applying the Law of Demeter to Rails programming.
I gave an older, simpler version of this talk at Philly.rb on 1/15/2013. I've replaced those older slides.
A11Y? I18N? L10N? UTF8? WTF? Understanding the connections between: accessib...mtoppa
This document discusses accessibility, internationalization, localization, and character sets. It begins by defining each term and explaining their connections. It emphasizes that accessibility is important for many users, not just those with disabilities. It provides guidelines for making content accessible and discusses tools for internationalization and localization in WordPress like loading text domains and generating POT files to enable translations.
The promise and peril of Agile and Lean practicesmtoppa
Why you may to consider adopting Agile or Lean practices, how they differ from each other, what benefits you can expect, and what obstacles you may face.
Why do planes crash? Lessons for junior and senior developersmtoppa
The document discusses lessons for junior and senior developers based on analysis of plane crashes. It notes that plane crashes are often due to poor communication between pilots, with junior pilots using "mitigated speech" to avoid directly confronting seniors. This leads to key safety issues being missed or misunderstood. Similarly, junior developers may hint at problems rather than speaking directly to avoid appearing confrontational. The document advocates for junior developers to clearly communicate any concerns they have and for senior developers to actively mentor junior staff and listen to their perspectives without prejudice.
Boston Ruby Meetup: The promise and peril of Agile and Lean practicesmtoppa
Why you may to consider adopting Agile or Lean practices, how they differ from each other, what benefits you can expect, and what obstacles you may face
WordCamp Nashville 2016: The promise and peril of Agile and Lean practicesmtoppa
Michael Toppa gave a presentation on the promise and perils of Agile and Lean practices. He discussed how adopting these practices can help address common project problems like unrealistic expectations that compromise quality, multitasking that reduces productivity, and lack of feedback that leads to building the wrong products. However, going all-in with Agile through methods like Scrum requires major changes all at once, while adopting Lean through Kanban allows for more incremental evolution. Successful implementations inspect and adapt processes, rather than relying on superficial or misapplied changes.
We want code that is easy to understand, re-usable, and flexible. But we are always up against deadlines, so we rush, and end up with code that is messy, buggy, hard to maintain, and makes us go slower even though we’re trying to go faster.
What is clean code? In this talk I’ll provide some answers to this question, and introduce you to 10 good habits that will help keep your code clean, such as the use of meaningful names for your variables and functions, and following the “Boy Scout Rule” (leave the code cleaner than you found it). I will even try to persuade you that using a lot of code comments is a sign that there are problems with your code.
WordCamp Boston 2015: Agile Contracts for WordPress Consultantsmtoppa
Before going out on my own to start Poka Yoke Design this June, I worked at PromptWorks, where we signed over 30 Time & Materials (T&M) contracts with clients over the past 2 years, from local businesses to nationally known media companies. This is in contrast to traditional Fixed Scope, Fixed Cost (FS-FC) contracts.
Prospective clients typically have an initial preference for FS-FC contracts: they’re familiar, and at first glance, seem to guarantee the client will get what they want (by spelling out business requirements in detail), and place the business risk on the contractor. However, traditional contracts fail to recognize that web application development is more like an R&D project than a construction project. In the fast paced world of the web, business requirements can grow and change rapidly, technical challenges and opportunities can arise, and both parties benefit from being able to respond to these changes in a teamwork fashion, instead of spending time on lengthy contract re-negotiations.
In this talk we’ll explore what goes into a T&M contract, how to persuade a prospective client to sign one, and how to live up to the expectations you create in the persuasion process, to deliver a successful project.
WordCamp Nashville 2015: Agile Contracts for WordPress Consultantsmtoppa
When you develop a WordPress based project for a client in an Agile way, you deliver working features on a frequent basis, such as weekly, as you build out the project. This allows for review, feedback, and adapting to change. Evolving business requirements are welcome in an Agile process, instead of a source of frustration.
The problem is, even if clients think an Agile approach sounds good, they almost always have a preference for traditional Fixed Price, Fixed Scope contracts. These contracts, with detailed specifications, costs, and delivery dates, contradict the Agile approach, but they provide clients them with a sense of security and confidence that they will get what they want.
How do you convince them a traditional contract is actually riskier than they think, and persuade them to instead sign a contract that facilities Agile development? This is the most significant challenge facing consultants who want to follow Agile practices. At PromptWorks we use Time & Materials contracts with our clients, and we have signed over 30 of them in the past 2 years. In this talk we’ll discuss:
* What different types of contracts imply about the nature of the relationship with your client, and what it means for it to be a professional relationship of equals. Risk and reward should be shared, and the relationship should feel like a partnership.
* The persuasion and negotiation process for getting your prospective clients to sign a Time & Materials contract. We’ll discuss real-life situations from our experience at PromptWorks.
* PromptWorks’ typical project proposal, Master Service Agreement, and Scope of Work documents. We’ll highlight key aspects of our approach, and things to look out for if you have to use contract documents provided by your client.
An overview of Agile and Scrum practices, and a comparison of 2 different, real-life Agile adoption experiences in a University setting. Presented at the Wharton Web Conference, July 2011
Planes crash due to the cumulative effect of small human errors, not single catastrophic failures. Studies show crashes typically result from 7 consecutive errors. Poor communication and mitigated speech among pilots, where concerns are subtly hinted at rather than directly stated, have contributed to crashes when pilots miss or ignore hints due to fatigue or cultural norms. Training aims to reduce mitigated speech and establish clear procedures for escalating safety concerns, even if it means relieving the captain temporarily, to prevent crashes from cascading errors.
Monitoring and Managing Anomaly Detection on OpenShift.pdfTosin Akinosho
Monitoring and Managing Anomaly Detection on OpenShift
Overview
Dive into the world of anomaly detection on edge devices with our comprehensive hands-on tutorial. This SlideShare presentation will guide you through the entire process, from data collection and model training to edge deployment and real-time monitoring. Perfect for those looking to implement robust anomaly detection systems on resource-constrained IoT/edge devices.
Key Topics Covered
1. Introduction to Anomaly Detection
- Understand the fundamentals of anomaly detection and its importance in identifying unusual behavior or failures in systems.
2. Understanding Edge (IoT)
- Learn about edge computing and IoT, and how they enable real-time data processing and decision-making at the source.
3. What is ArgoCD?
- Discover ArgoCD, a declarative, GitOps continuous delivery tool for Kubernetes, and its role in deploying applications on edge devices.
4. Deployment Using ArgoCD for Edge Devices
- Step-by-step guide on deploying anomaly detection models on edge devices using ArgoCD.
5. Introduction to Apache Kafka and S3
- Explore Apache Kafka for real-time data streaming and Amazon S3 for scalable storage solutions.
6. Viewing Kafka Messages in the Data Lake
- Learn how to view and analyze Kafka messages stored in a data lake for better insights.
7. What is Prometheus?
- Get to know Prometheus, an open-source monitoring and alerting toolkit, and its application in monitoring edge devices.
8. Monitoring Application Metrics with Prometheus
- Detailed instructions on setting up Prometheus to monitor the performance and health of your anomaly detection system.
9. What is Camel K?
- Introduction to Camel K, a lightweight integration framework built on Apache Camel, designed for Kubernetes.
10. Configuring Camel K Integrations for Data Pipelines
- Learn how to configure Camel K for seamless data pipeline integrations in your anomaly detection workflow.
11. What is a Jupyter Notebook?
- Overview of Jupyter Notebooks, an open-source web application for creating and sharing documents with live code, equations, visualizations, and narrative text.
12. Jupyter Notebooks with Code Examples
- Hands-on examples and code snippets in Jupyter Notebooks to help you implement and test anomaly detection models.
Taking AI to the Next Level in Manufacturing.pdfssuserfac0301
Read Taking AI to the Next Level in Manufacturing to gain insights on AI adoption in the manufacturing industry, such as:
1. How quickly AI is being implemented in manufacturing.
2. Which barriers stand in the way of AI adoption.
3. How data quality and governance form the backbone of AI.
4. Organizational processes and structures that may inhibit effective AI adoption.
6. Ideas and approaches to help build your organization's AI strategy.
Session 1 - Intro to Robotic Process Automation.pdfUiPathCommunity
👉 Check out our full 'Africa Series - Automation Student Developers (EN)' page to register for the full program:
https://bit.ly/Automation_Student_Kickstart
In this session, we shall introduce you to the world of automation, the UiPath Platform, and guide you on how to install and setup UiPath Studio on your Windows PC.
📕 Detailed agenda:
What is RPA? Benefits of RPA?
RPA Applications
The UiPath End-to-End Automation Platform
UiPath Studio CE Installation and Setup
💻 Extra training through UiPath Academy:
Introduction to Automation
UiPath Business Automation Platform
Explore automation development with UiPath Studio
👉 Register here for our upcoming Session 2 on June 20: Introduction to UiPath Studio Fundamentals: https://community.uipath.com/events/details/uipath-lagos-presents-session-2-introduction-to-uipath-studio-fundamentals/
What is an RPA CoE? Session 1 – CoE VisionDianaGray10
In the first session, we will review the organization's vision and how this has an impact on the COE Structure.
Topics covered:
• The role of a steering committee
• How do the organization’s priorities determine CoE Structure?
Speaker:
Chris Bolin, Senior Intelligent Automation Architect Anika Systems
Introduction of Cybersecurity with OSS at Code Europe 2024Hiroshi SHIBATA
I develop the Ruby programming language, RubyGems, and Bundler, which are package managers for Ruby. Today, I will introduce how to enhance the security of your application using open-source software (OSS) examples from Ruby and RubyGems.
The first topic is CVE (Common Vulnerabilities and Exposures). I have published CVEs many times. But what exactly is a CVE? I'll provide a basic understanding of CVEs and explain how to detect and handle vulnerabilities in OSS.
Next, let's discuss package managers. Package managers play a critical role in the OSS ecosystem. I'll explain how to manage library dependencies in your application.
I'll share insights into how the Ruby and RubyGems core team works to keep our ecosystem safe. By the end of this talk, you'll have a better understanding of how to safeguard your code.
5th LF Energy Power Grid Model Meet-up SlidesDanBrown980551
5th Power Grid Model Meet-up
It is with great pleasure that we extend to you an invitation to the 5th Power Grid Model Meet-up, scheduled for 6th June 2024. This event will adopt a hybrid format, allowing participants to join us either through an online Mircosoft Teams session or in person at TU/e located at Den Dolech 2, Eindhoven, Netherlands. The meet-up will be hosted by Eindhoven University of Technology (TU/e), a research university specializing in engineering science & technology.
Power Grid Model
The global energy transition is placing new and unprecedented demands on Distribution System Operators (DSOs). Alongside upgrades to grid capacity, processes such as digitization, capacity optimization, and congestion management are becoming vital for delivering reliable services.
Power Grid Model is an open source project from Linux Foundation Energy and provides a calculation engine that is increasingly essential for DSOs. It offers a standards-based foundation enabling real-time power systems analysis, simulations of electrical power grids, and sophisticated what-if analysis. In addition, it enables in-depth studies and analysis of the electrical power grid’s behavior and performance. This comprehensive model incorporates essential factors such as power generation capacity, electrical losses, voltage levels, power flows, and system stability.
Power Grid Model is currently being applied in a wide variety of use cases, including grid planning, expansion, reliability, and congestion studies. It can also help in analyzing the impact of renewable energy integration, assessing the effects of disturbances or faults, and developing strategies for grid control and optimization.
What to expect
For the upcoming meetup we are organizing, we have an exciting lineup of activities planned:
-Insightful presentations covering two practical applications of the Power Grid Model.
-An update on the latest advancements in Power Grid -Model technology during the first and second quarters of 2024.
-An interactive brainstorming session to discuss and propose new feature requests.
-An opportunity to connect with fellow Power Grid Model enthusiasts and users.
Essentials of Automations: Exploring Attributes & Automation ParametersSafe Software
Building automations in FME Flow can save time, money, and help businesses scale by eliminating data silos and providing data to stakeholders in real-time. One essential component to orchestrating complex automations is the use of attributes & automation parameters (both formerly known as “keys”). In fact, it’s unlikely you’ll ever build an Automation without using these components, but what exactly are they?
Attributes & automation parameters enable the automation author to pass data values from one automation component to the next. During this webinar, our FME Flow Specialists will cover leveraging the three types of these output attributes & parameters in FME Flow: Event, Custom, and Automation. As a bonus, they’ll also be making use of the Split-Merge Block functionality.
You’ll leave this webinar with a better understanding of how to maximize the potential of automations by making use of attributes & automation parameters, with the ultimate goal of setting your enterprise integration workflows up on autopilot.
This talk will cover ScyllaDB Architecture from the cluster-level view and zoom in on data distribution and internal node architecture. In the process, we will learn the secret sauce used to get ScyllaDB's high availability and superior performance. We will also touch on the upcoming changes to ScyllaDB architecture, moving to strongly consistent metadata and tablets.
Discover top-tier mobile app development services, offering innovative solutions for iOS and Android. Enhance your business with custom, user-friendly mobile applications.
zkStudyClub - LatticeFold: A Lattice-based Folding Scheme and its Application...Alex Pruden
Folding is a recent technique for building efficient recursive SNARKs. Several elegant folding protocols have been proposed, such as Nova, Supernova, Hypernova, Protostar, and others. However, all of them rely on an additively homomorphic commitment scheme based on discrete log, and are therefore not post-quantum secure. In this work we present LatticeFold, the first lattice-based folding protocol based on the Module SIS problem. This folding protocol naturally leads to an efficient recursive lattice-based SNARK and an efficient PCD scheme. LatticeFold supports folding low-degree relations, such as R1CS, as well as high-degree relations, such as CCS. The key challenge is to construct a secure folding protocol that works with the Ajtai commitment scheme. The difficulty, is ensuring that extracted witnesses are low norm through many rounds of folding. We present a novel technique using the sumcheck protocol to ensure that extracted witnesses are always low norm no matter how many rounds of folding are used. Our evaluation of the final proof system suggests that it is as performant as Hypernova, while providing post-quantum security.
Paper Link: https://eprint.iacr.org/2024/257
The Department of Veteran Affairs (VA) invited Taylor Paschal, Knowledge & Information Management Consultant at Enterprise Knowledge, to speak at a Knowledge Management Lunch and Learn hosted on June 12, 2024. All Office of Administration staff were invited to attend and received professional development credit for participating in the voluntary event.
The objectives of the Lunch and Learn presentation were to:
- Review what KM ‘is’ and ‘isn’t’
- Understand the value of KM and the benefits of engaging
- Define and reflect on your “what’s in it for me?”
- Share actionable ways you can participate in Knowledge - - Capture & Transfer
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyScyllaDB
Freshworks creates AI-boosted business software that helps employees work more efficiently and effectively. Managing data across multiple RDBMS and NoSQL databases was already a challenge at their current scale. To prepare for 10X growth, they knew it was time to rethink their database strategy. Learn how they architected a solution that would simplify scaling while keeping costs under control.
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving
Manufacturing custom quality metal nameplates and badges involves several standard operations. Processes include sheet prep, lithography, screening, coating, punch press and inspection. All decoration is completed in the flat sheet with adhesive and tooling operations following. The possibilities for creating unique durable nameplates are endless. How will you create your brand identity? We can help!
"Choosing proper type of scaling", Olena SyrotaFwdays
Imagine an IoT processing system that is already quite mature and production-ready and for which client coverage is growing and scaling and performance aspects are life and death questions. The system has Redis, MongoDB, and stream processing based on ksqldb. In this talk, firstly, we will analyze scaling approaches and then select the proper ones for our system.
High performance Serverless Java on AWS- GoTo Amsterdam 2024Vadym Kazulkin
Java is for many years one of the most popular programming languages, but it used to have hard times in the Serverless community. Java is known for its high cold start times and high memory footprint, comparing to other programming languages like Node.js and Python. In this talk I'll look at the general best practices and techniques we can use to decrease memory consumption, cold start times for Java Serverless development on AWS including GraalVM (Native Image) and AWS own offering SnapStart based on Firecracker microVM snapshot and restore and CRaC (Coordinated Restore at Checkpoint) runtime hooks. I'll also provide a lot of benchmarking on Lambda functions trying out various deployment package sizes, Lambda memory settings, Java compilation options and HTTP (a)synchronous clients and measure their impact on cold and warm start times.
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Dependency Injection for Wordpress
1. Dependency Injection for
WordPress Plugin Development
Mike Toppa
WordCamp Nashville
April 21, 2012
#wcn12
www.toppa.com @mtoppa
2. Mike Toppa
● Director of Development, WebDevStudios
● 17 years of experience in web development,
project management, and team management
● Universities: Georgetown, Stanford, Penn
● Dot coms: E*Trade, Ask Jeeves
● Start-ups: Finexa, Kai's Candy Co
● WordPress development for non-profits
www.toppa.com @mtoppa
4. We want code to be...
● Easy to understand
● Easy to change
● Reusable (DRY)
● Bug free
www.toppa.com @mtoppa
5. So why is it usually like this?
“O.P.C” http://abstrusegoose.com/432
6. It happens because we are always in a hurry,
and requirements are always changing.
www.toppa.com @mtoppa
7. But coding fast and dirty
only makes us slower in the long run.
www.toppa.com @mtoppa
8. “We like to think we spend our time power typing,
but we actually spend most of our time
staring into the abyss.”
- Douglas Crockford
principal discoverer of JSON,
Creator of JSLint
www.toppa.com @mtoppa
9. The ratio of time spent reading code versus
writing is well over 10 to 1.
Therefore, making code easy to read
makes it easier to write.
- Bob Martin
Paraphrased from his book Clean Code
www.toppa.com @mtoppa
11. Clean code techniques
● Using meaningful names
● Don't repeat yourself (DRY)
● Object oriented principles and patterns
● Unit testing, test driven development (TDD)
● The “boy scout rule”
● Vertical slicing
● ...and many more
www.toppa.com @mtoppa
12. Clean code techniques
● Using meaningful names
● Don't repeat yourself (DRY)
● Object oriented principles and patterns
● Unit testing, test driven development (TDD)
● The “boy scout rule”
● Vertical slicing
● ...and many more
www.toppa.com @mtoppa
22. My Shashin plugin consists of 44 classes, each of
which has a meaningful name, follows the SRP,
and “does one thing”
PicasaPhotoDisplayer
SettingsMenu
YouTubeSynchronizer
Uninstall
etc.
www.toppa.com @mtoppa
23. Shashin example
class Admin_ShashinInstall {
// ...
public function run() {
$this->createAlbumTable();
$this->verifyAlbumTable();
$this->createPhotoTable();
$this->verifyPhotoTable();
$this->updateSettings();
return true;
}
// ...
}
www.toppa.com @mtoppa
24. Class Autoloading
● The problem:
● PHP lacks an equivalent statement to “import” or
“use” for classes
● Having to hardcode a bunch of file paths is extra
work, and makes code harder to change
● The solution:
● PHP 5.1.2 and spl_autoload_register()
● PHP Standards Working Group: PSR-0
www.toppa.com @mtoppa
25. PSR-0: Official Description
● Each "_" character in the CLASS NAME is
converted to a DIRECTORY_SEPARATOR
● The fully-qualified namespace and class is suffixed
with ".php" when loading from the file system
● Alphabetic characters... may be of any
combination of lower case and upper case
● ...And other rules about namespaces
● Source: https://github.com/php-fig/fig-
standards/blob/master/accepted/PSR-0.md
www.toppa.com @mtoppa
26. PSR-0 Example
Admin_ShashinInstall
is translated to
Admin/ShashinInstall.php
www.toppa.com @mtoppa
27. Toppa Plugin Libraries Autoloader
// this is at the top of the main file for my Shashin plugin
require_once dirname(__FILE__) . '/../toppa-plugin-libraries-for-
wordpress/ToppaAutoLoaderWp.php';
$shashinAutoLoader = new ToppaAutoLoaderWp('/shashin');
// that's it! I can now call “new” on any class under the shashin folder
// and its class file will be automatically loaded
www.toppa.com @mtoppa
28. Shashin's capabilities are shaped by how its
objects are wired together, through
implementation of the
Dependency Inversion Principle
www.toppa.com @mtoppa
30. Naïve model of a button and lamp
Lamp
Button
+ turnOn()
+ poll()
+ turnOff()
class Button {
private $lamp;
public function __construct(Lamp $lamp) {
$this->lamp = $lamp;
}
public function poll() {
if (/* some condition */) {
$this->lamp->turnOn();
}
}
}
Example from “Agile Software Development”
31. Dependency inversion applied
<<interface>>
Button SwitchableDevice
+ poll() + turnOn()
+ turnOff()
Lamp
This is the Abstract Server pattern
32. class Lamp implements SwitchableDevice {
public function turnOn() {
// code
}
public function turnOff() {
// code
}
}
class Button {
private $switchableDevice;
public function __construct(SwitchableDevice $switchableDevice) {
$this->switchableDevice = $switchableDevice;
}
public function poll() {
if (/* some condition */) {
$this->switchableDevice->turnOn();
}
}
}
33. A web of collaborating objects
● The SRP and DIP together drive a
“composition” approach to OO design
● From Growing Object Oriented Software,
Guided by Tests:
"An object oriented system is a web of
collaborating objects... The behavior of the
system is an emergent property of the
composition of the objects - the choice of
objects and how they are connected... Thinking
of a system in terms of its dynamic
communication structure is a significant mental
shift from the static classification that most of us
learn when being introduced to objects."
34. Composition
(“Has a...”)
vs.
Inheritance
(“Is a...”)
www.toppa.com @mtoppa
35. The SRP is about objects that do one thing
The DIP is about how to wire them together
to create working, flexible software
www.toppa.com @mtoppa
36. Never, ever do this
class Button {
private $lamp;
public function __construct() {
$this->lamp = new Lamp();
}
//...
}
www.toppa.com @mtoppa
37. Instead, you want to
inject the object dependency
Dependency injection!
www.toppa.com @mtoppa
38. Dependency injection is one of many
design patterns
for implementing the
Dependency inversion principle
www.toppa.com @mtoppa
43. Dependency chains
If class A depends on class B,
and class B depends on class C,
class A should be blissfully unaware of class C
www.toppa.com @mtoppa
44. To do this without going insane,
you need an injection container
www.toppa.com @mtoppa
45. Example from Shashin
class Lib_ShashinContainer {
// …
public function getPhotoRefData() {
if (!isset($this->photoRefData)) {
$this->photoRefData = new Lib_ShashinPhotoRefData();
}
return $this->photoRefData;
}
public function getClonablePhoto() {
if (!isset($this->clonablePhoto)) {
$this->getPhotoRefData();
$this->clonablePhoto = new Lib_ShashinPhoto($this->photoRefData);
}
return $this->clonablePhoto;
}
www.toppa.com @mtoppa
46. Example continued
public function getClonablePhotoCollection() {
if (!isset($this->photoCollection)) {
$this->getClonablePhoto();
$this->getSettings();
$this->clonablePhotoCollection = new Lib_ShashinPhotoCollection();
$this->clonablePhotoCollection->setClonableDataObject($this->clonablePhoto);
$this->clonablePhotoCollection->setSettings($this->settings);
}
return $this->clonablePhotoCollection;
}
www.toppa.com @mtoppa
48. What to do when you need
a new object inside a loop
One solution is cloning
www.toppa.com @mtoppa
49. Shashin Example
class Admin_ShashinSynchronizerPicasa extends Admin_ShashinSynchronizer {
// …
public function syncAlbumPhotos(array $decodedAlbumData) {
// …
foreach ($decodedAlbumData['feed']['entry'] as $entry) {
$photoData = $this->extractFieldsFromDecodedData($entry, $photoRefData,
'picasa');
// ...
$photo = clone $this->clonablePhoto;
$photo->set($photoData);
$photo->flush();
}
www.toppa.com @mtoppa
50. What if you need a new object inside a loop,
but can't know the subtype you'll need
ahead of time?
Let the injection container figure it out
www.toppa.com @mtoppa
51. Shashin Example
class Public_ShashinLayoutManager {
// ...
public function setTableBody() {
// …
for ($i = 0; $i < count($this->collection); $i++) {
// ...
$dataObjectDisplayer = $this->container->getDataObjectDisplayer(
$this->shortcode,
$this->collection[$i]
);
$this->tableBody .= $dataObjectDisplayer->run();
// ...
}
www.toppa.com @mtoppa
52. Dependency injection: key benefits
● Makes your object dependencies adaptable to
emerging needs
● With an injection container, simplifies managing
dependency chains
● Supports “preferring polymorphism to
conditionals”, making it easy to add new class
subtypes
www.toppa.com @mtoppa
54. Use dependency injection to instantiate
only the objects you need,
when you need them
www.toppa.com @mtoppa
55. Make immutable objects into
properties of the container,
so you only need to instantiate them once
www.toppa.com @mtoppa
56. PHP 5 has improved memory
management
“In PHP 5, the infrastructure of the object model was
rewritten to work with object handles. Unless you
explicitly clone an object by using the clone keyword you
will never create behind the scene duplicates of your
objects. In PHP 5, there is neither a need to pass objects
by reference nor assigning them by reference.”
From http://devzone.zend.com/article/1714
www.toppa.com @mtoppa
This means different things to different people Smashing Magazine article compared them in terms of: Structure – short line lengths, indentions Purpose – limericks for humor, not using HTML tables for layout Meaning and Efficiency – how intent is conveyed, how bloat is avoided Perception – perceived as the master's craft “apex of the written word” - custom wooden staircases parallel But while we can appreciate poetry with hidden meaning and indirection, that's not what we want in our code
Easy to understand Intention revealing: not just what, but also why Easy to change Adaptable to emerging needs: not fragile, not rigid Reusable (DRY) If we copy and paste, we are creating duplicate code we have to maintain Bug free Broken code costs time, money, and reputation
Tight deadlines Too much work Changing requirements Too many useless meetings Other people's messy code Our messy code Just make it work and get on to the next thing!
And launching buggy code can cost money and reputation
The exact shape of these lines is hotly debated May projects have ultimately failed because of the steep cost curve of messy code
Design patterns you may know or heard of, are ways of expressing these design principles
To explain dependency injection, I need to explain the DIP, and to explain it, I first need to explain the SRP
I'm going to show SRP and DIP examples of code from Shashin
Clean code books and articles all use other languages as examples – I wanted to try applying them to PHP and WordPress
Shashin supports multiple viewers
There's a lot going on here. A lot of different data sources and display possibilities to support. How do you keep the code from becoming a tangled mess?
Do one thing, do it well, do it only For methods, this typically means changing the value of only one variable If you are passing more than 2 or 3 arguments into a method, you are probably doing more than one thing For classes, it means having a single conceptual responsibility You want high cohesiveness in a class This is the opposite of how most WordPress plugins are written
The whole class is about 150 lines The run method calls the other methods (this is a simple use of the command pattern) It reads like a table of contents Breaking the functionality down into methods that do one thing makes the code easier to read and to unit test Installation is especially useful to break down into small methods that can have automated tests, as plugin activation is especially difficult to debug
spl_autoloader_register allows you to register a function that will be called when PHP encounters a “new” call, for finding and including the file containing the class. You can register more than one function.
The problem is, this conflicts with WordPress naming conventions
It's common to see code that hard-wires together all the parts, when those connections could be made more flexible and extensible
This solution violates the DIP Button depends directly on Lamp Button is not reusable It can't control, for example, a Motor
What it means Neither Button nor Lamp “own” the interface Buttons can now control any device that implements SwitchableDevice Lamps and other SwitchableDevices can now be controlled by any object that accepts a SwitchableDevice
Not shown here is the interface
Author: Steve Freeman and Nat Pryce
There was one thing that was ok in the naïve example – we were at least passing in the lamp object Instantiating it directly in the class makes your code impossible to unit test
Factory pattern, adapter patter, service locator pattern are others that implement the DIP
Constructor injection gives you a valid object, with all its dependencies, upon construction But constructor injection becomes hard to read and use when there are more than a few objects to inject More about this in an upcoming slide...
We want loose coupling, not a rigid chain of dependencies that is hard to change
I am making the objects properties of the container, because they happen to be immutable objects, so they are reusable You can see I'm using constructor injection I'll explain in a minute why I called it a “clonable” photo
Start with constructor injection As your design evolves, switch to setter injection once there are more than 2 objects to inject If you rely on an injection container, you don't have to worry about forgetting to call a required setter
This was an interesting problem for me with Shashin. It supports multiple media sources (Picasa, etc), multiple viewers (Fancybox, etc), and we could be displaying a photo or an album cover, each of which has different behaviors
Regardless of the type, the layout rules for the thumbnails is always the same So here I've injected the container itself getDataObjectDisplayer() uses the passed in arguments to determine which subtype of DataObjectDisplayer to return
The complexity of having 44 classes in Shashin is justified by its need for flexibility You can support a new viewer or a new photo service simply by creating a new subclass. This is much more maintainable and extensible than a single huge file with deeply nested conditionals and unclear dependencies But if I knew I would never need that kind of flexibility, there would be no justification for creating these layers of abstraction – they would just be needless complexity