The document discusses principles of object-oriented design such as single responsibility, encapsulation, dependency inversion, and design patterns. It emphasizes keeping designs simple by following basic principles and refactoring to patterns after they naturally emerge rather than forcing patterns prematurely. Designs should aim to be flexible, maintainable and avoid unnecessary complexity through applying these foundational OOD concepts.
The document discusses how to build a career in operations by developing an operational mentality. It emphasizes that operations is not just a separate role but should be integrated into all roles, and developing an understanding of how systems will be operated from the beginning leads to building more robust systems. Treating operations as a craft and pursuing excellence through experience, discipline, and sharing knowledge with peers is key to success.
What you should think about putting in webops dashboards. There's a lot of discussion that isn't annotated in the slide stack -- so you're missing a lot without audio.
Monitoring is easy, why are we so bad at it presentationTheo Schlossnagle
The document discusses why monitoring is important but difficult. It states that the main reason organizations struggle with monitoring is that they focus too much on technical aspects like networks and systems rather than what really matters - the business metrics that define success for the organization and its stakeholders.
The document discusses a balloon that was sent into space by the author. It provides details about the balloon's flight, including that it reached an altitude of over 100,000 feet (almost 20 miles) and traveled a total distance of 137 miles before landing. The document answers common questions about the project, such as how the altitude was determined, discussing how cold it was at that altitude, whether the project was legal to undertake, and the total costs. It also shares photos and links related to tracking and predicting the balloon's path.
This document summarizes Jake Smith's presentation on micro-frameworks for PHP given at Dallas PHP on 4/12/2011. It introduces Jake and the topic of micro-frameworks, then provides overviews of several popular PHP micro-frameworks: Minimum, Silex, Limonade, and Slim. For each framework, it lists the website, required PHP version, provides a brief example app, and calls out pros and cons. The goal is to help attendees understand what micro-frameworks are and compare options.
Oakland Grown Presentation - April 2013CB Smith-Dahl
Some helpful info for small businesses looking to make videos. What are the tradeoff's for hiring different people to do the work? What do you need to know & do to make the best video possible? CBV staff is available to give this training at your organization; this particular presentation was given to members of Oakland Grown and the Oakland Sustainable Business Alliance in April 2013. A special thank you to Techliminal for hosting the event.
The Hitchhiker's guide to mobile developmentNikolai Onken
The document discusses the current state of mobile development. It covers mobile runtimes, debugging tools, editors, build services, testing, reporting, app stores, and libraries. It then discusses approaches to coding mobile apps, including using mixins and libraries sparingly. It provides examples of a mobile app built with a delegate mixin for event handling and data binding. The document calls for further developing mobile capabilities by pushing frameworks like PhoneGap and advocating for more direct access to device APIs from JavaScript.
Android is an open source software stack for mobile devices that includes an operating system, middleware and key applications. It allows developers to write managed code in Java for the Dalvik virtual machine. The Android application framework provides components like activities, services and content providers that can be reused. It also supports hardware like cameras, GPS and accelerometers.
The document discusses how to build a career in operations by developing an operational mentality. It emphasizes that operations is not just a separate role but should be integrated into all roles, and developing an understanding of how systems will be operated from the beginning leads to building more robust systems. Treating operations as a craft and pursuing excellence through experience, discipline, and sharing knowledge with peers is key to success.
What you should think about putting in webops dashboards. There's a lot of discussion that isn't annotated in the slide stack -- so you're missing a lot without audio.
Monitoring is easy, why are we so bad at it presentationTheo Schlossnagle
The document discusses why monitoring is important but difficult. It states that the main reason organizations struggle with monitoring is that they focus too much on technical aspects like networks and systems rather than what really matters - the business metrics that define success for the organization and its stakeholders.
The document discusses a balloon that was sent into space by the author. It provides details about the balloon's flight, including that it reached an altitude of over 100,000 feet (almost 20 miles) and traveled a total distance of 137 miles before landing. The document answers common questions about the project, such as how the altitude was determined, discussing how cold it was at that altitude, whether the project was legal to undertake, and the total costs. It also shares photos and links related to tracking and predicting the balloon's path.
This document summarizes Jake Smith's presentation on micro-frameworks for PHP given at Dallas PHP on 4/12/2011. It introduces Jake and the topic of micro-frameworks, then provides overviews of several popular PHP micro-frameworks: Minimum, Silex, Limonade, and Slim. For each framework, it lists the website, required PHP version, provides a brief example app, and calls out pros and cons. The goal is to help attendees understand what micro-frameworks are and compare options.
Oakland Grown Presentation - April 2013CB Smith-Dahl
Some helpful info for small businesses looking to make videos. What are the tradeoff's for hiring different people to do the work? What do you need to know & do to make the best video possible? CBV staff is available to give this training at your organization; this particular presentation was given to members of Oakland Grown and the Oakland Sustainable Business Alliance in April 2013. A special thank you to Techliminal for hosting the event.
The Hitchhiker's guide to mobile developmentNikolai Onken
The document discusses the current state of mobile development. It covers mobile runtimes, debugging tools, editors, build services, testing, reporting, app stores, and libraries. It then discusses approaches to coding mobile apps, including using mixins and libraries sparingly. It provides examples of a mobile app built with a delegate mixin for event handling and data binding. The document calls for further developing mobile capabilities by pushing frameworks like PhoneGap and advocating for more direct access to device APIs from JavaScript.
Android is an open source software stack for mobile devices that includes an operating system, middleware and key applications. It allows developers to write managed code in Java for the Dalvik virtual machine. The Android application framework provides components like activities, services and content providers that can be reused. It also supports hardware like cameras, GPS and accelerometers.
The document provides an overview of basics of web application security. It discusses what web application security is, why web application firewalls are not complete solutions, and how to secure websites and web applications. It also introduces history of security flaws, vulnerabilities in web applications, and the OWASP Top 10 risks. The objectives, network vs web security, and how to secure applications through developer training and testing are covered. Types of security testing and their benefits are also summarized.
The document investigates putative monoamine oxidase (MAO) genes in the nematode Caenorhabditis elegans. The researcher searched for genes containing amine oxidase domains and identified two candidate MAO genes, amx-1 and amx-2. Transgenic experiments showed amx-1 is expressed in chemosensory neurons and gut cells, while behavioral assays found differences in monoamine-dependent behaviors between wild-type and mutant worms. Further experiments aim to purify and characterize the protein products of the candidate MAO genes to better understand their roles in the worm's nervous system and behaviors.
This document introduces Behavior Driven Development (BDD). It defines BDD as starting with human-readable sentences that describe a feature and how it should work before implementing it in software. It discusses the principles of BDD, including being example-based, specifying features better, and having a shared understanding through discussion. An example feature is provided that uses the Given, When, Then structure to define a scenario for changing an application's status through specific steps. The document also notes that BDD leads to better defined acceptance criteria and living documentation.
This document provides an overview of a security bootcamp presentation on computer and web application security. It discusses the history of security threats dating back to 1943 and examples of computer worms and viruses from 1979 to 2011 that caused billions in damages. It also covers topics like HTTP and HTTPS protocols, basic web architecture including components, vulnerabilities, and how firewalls, network scanners and web application firewalls have limitations and are not complete solutions for web application security. The document emphasizes the importance of secure development practices, thorough application testing, and use of automated testing tools to continuously check for vulnerabilities.
To succeed in a software development career, it is important to be passionate about programming and disconnect from work when not on the job. Developers should understand how the businesses they work for operate and make money. Continuous learning, practicing skills regularly, and getting involved in open source projects can help developers improve. Networking, communicating well, and writing clean, maintainable code are also valuable skills. Overall, enjoying the work and having fun are important for long-term success.
RTI activists play a major role in fighting corruption in India, where there is no law to protect whistleblowers as highlighted by the assassination of Satyendra Dubey. Some have called for the creation of an anti-corruption police force and specialized courts to investigate and prosecute corruption at all levels of government. Efforts should also be made to improve court efficiency, increase awareness of government procedures, strictly enforce right to information and citizen charter laws, audit politician's accounts and assets, and make the police department more independent.
Google dominates the search market with 69% share compared to Bing's 26%. Google aims to provide users with search results faster by anticipating their needs through its Knowledge Graph, which compiles information about topics from various sources on the web. Google also uses authorship and verified online profiles to rank results higher if the content is associated with a known author. For local businesses, factors like name, address, phone number consistency, positive reviews from different sites, and local links can help improve local search rankings on Google.
The document provides an overview of web architecture and related technologies. It discusses:
- The history and basics of the World Wide Web and how it works.
- Key protocols like HTTP and HTTPS, including how requests and responses are structured.
- Common status codes and HTTP verbs used in requests.
- The layers of a web application, including presentation, logical, and data layers.
- Differences between two-tier and three-tier architectures, with two-tier having just client and data tiers while three-tier separates the logical/business tier.
Devopsdays Goteborg 2011 - State of the UnionJohn Willis
The document appears to be a slide deck from a presentation given at DevOpsDays Goteborg 2011. The presentation discusses the history and convergence of the Lean Startup, Velocity, and Agile Infrastructure movements that contributed to the DevOps movement. It also discusses resources for learning more about DevOps including important books, Gene Kim's goals of prescribing how Development, Operations, and InfoSec can work together, and a call for readers to provide feedback on related works.
The presentation is about JavaScriptMVC (JMVC), a JavaScript framework. The agenda includes discussing the needs for a framework, tested frameworks, JMVC itself, and showing some code. The document discusses how frameworks evolve over time as new technologies are incorporated, and similarities between JMVC and Rails, though JMVC is not intended to be identical to Rails. It also briefly mentions FuncUnit, StealJS, jQueryMX and DocumentJS JavaScript libraries.
This document summarizes a presentation about managing CPAN dependencies for web development projects. It describes a case study where a developer installed many CPAN modules for a new web app, but ran into problems with dependency and versioning issues during deployment to production servers. The presenter then introduced their solution called Carton, a tool for creating isolated, local Perl environments for apps and locking dependency versions to allow reproducible, stable deployments across different machines. Key features discussed included dependency declaration, isolated environments, version control, analysis and more. The document concludes with a call for questions and thanks.
The document discusses how Ruby on Rails (RoR) helped during floods in Australia. It describes how Heroku, a Platform as a Service (PaaS), allows developers to deploy RoR applications using a git-based workflow. Heroku manages web and background processes (dynos and workers) and allows scaling by adding more dynos to handle requests.
Watch the video along with the slides at: https://www.youtube.com/watch?v=U7d9f2WY7O8
Randall Hansen of Puppet Labs speaking on "A Usability Tour of Puppet (Warts and All)" at PuppetCamp Europe 2011, Amsterdam, Netherlands.
Patrick Debois gave an introduction to DevOps. He discussed how Agile development improved collaboration between developers and testers but neglected operations teams. Traditional continuous integration models separated development and operations. DevOps aims to bring development and operations teams together through practices like infrastructure as code, configuration management, continuous integration/delivery, and collaboration across roles. Culture and mindset shifts are also important for DevOps, prioritizing collaboration, craftsmanship, and trust between teams.
The document provides an introduction to DevOps concepts including:
- DevOps aims to shorten the period between development and operations through better alignment.
- It is not a product but a cultural and professional movement to address problems like bottlenecks and long wait times between teams.
- Key aspects of DevOps include automating infrastructure provisioning and deployments, measuring performance improvements, and sharing knowledge across teams.
This document appears to be notes from a presentation or talk. It discusses various topics related to Plone, a content management system, including its vision, customers as developers, theories of web development, what makes a good development tool, who Plone currently solves problems for, issues with Buildout and the database, minimizing knowledge and steps needed, and developing by default. The document advocates for making Plone more accessible and developable out of the box.
Generating Print Sales Leads with LinkedIn session 1Joe Kern
This document discusses how to generate print sales leads using LinkedIn. It recommends completing your LinkedIn profile with details like photo, positions, education, and recommendations. It also suggests building your network by searching for contacts from your email and uploading contact lists. The document outlines strategies for lead generation like researching companies and prospects, asking for introductions, and advanced searching on LinkedIn.
Watch along with the video at https://www.youtube.com/watch?v=ag-bI5lr55s
Luke Kanies, CEO and Founder of Puppet Labs, talks on "Making Puppet More Hackable" at PuppetCamp Europe '11, Amsterdam, Netherlands. Learn more: http://www.puppetlabs.com
This document summarizes a lecture on community management and user-generated content. It discusses defining objectives for an online community, understanding what motivates users to participate, and providing opportunities for feedback and collaboration. It also covers strategies for scaling a community through dividing tasks among teams and using appropriate tools. Legal issues like copyright and terms of service are addressed. Overall, the document provides guidance on developing an effective strategy to build and engage an online community.
Plone IDE - the future of Plone developmentMikko Ohtamaa
Plone IDE is an ACE Javascript editor based effort to provide easy and sane Plone development environment aimed for newcomers (though power users will probably enjoy it too).
The document provides an introduction to web crawling and extraction. It begins with an overview of web crawling and extraction, including definitions and examples of motivations for these techniques such as bookmarking sites, extracting business hours, and enabling vertical search. It then discusses desired properties of crawlers like speed, as well as constraints like politeness, distributed scaling, and minimizing overlap. The basic crawling algorithm is presented. Challenges of large-scale crawls are discussed, such as DNS lookups, number of URLs crawled, and politeness.
The document provides an overview of basics of web application security. It discusses what web application security is, why web application firewalls are not complete solutions, and how to secure websites and web applications. It also introduces history of security flaws, vulnerabilities in web applications, and the OWASP Top 10 risks. The objectives, network vs web security, and how to secure applications through developer training and testing are covered. Types of security testing and their benefits are also summarized.
The document investigates putative monoamine oxidase (MAO) genes in the nematode Caenorhabditis elegans. The researcher searched for genes containing amine oxidase domains and identified two candidate MAO genes, amx-1 and amx-2. Transgenic experiments showed amx-1 is expressed in chemosensory neurons and gut cells, while behavioral assays found differences in monoamine-dependent behaviors between wild-type and mutant worms. Further experiments aim to purify and characterize the protein products of the candidate MAO genes to better understand their roles in the worm's nervous system and behaviors.
This document introduces Behavior Driven Development (BDD). It defines BDD as starting with human-readable sentences that describe a feature and how it should work before implementing it in software. It discusses the principles of BDD, including being example-based, specifying features better, and having a shared understanding through discussion. An example feature is provided that uses the Given, When, Then structure to define a scenario for changing an application's status through specific steps. The document also notes that BDD leads to better defined acceptance criteria and living documentation.
This document provides an overview of a security bootcamp presentation on computer and web application security. It discusses the history of security threats dating back to 1943 and examples of computer worms and viruses from 1979 to 2011 that caused billions in damages. It also covers topics like HTTP and HTTPS protocols, basic web architecture including components, vulnerabilities, and how firewalls, network scanners and web application firewalls have limitations and are not complete solutions for web application security. The document emphasizes the importance of secure development practices, thorough application testing, and use of automated testing tools to continuously check for vulnerabilities.
To succeed in a software development career, it is important to be passionate about programming and disconnect from work when not on the job. Developers should understand how the businesses they work for operate and make money. Continuous learning, practicing skills regularly, and getting involved in open source projects can help developers improve. Networking, communicating well, and writing clean, maintainable code are also valuable skills. Overall, enjoying the work and having fun are important for long-term success.
RTI activists play a major role in fighting corruption in India, where there is no law to protect whistleblowers as highlighted by the assassination of Satyendra Dubey. Some have called for the creation of an anti-corruption police force and specialized courts to investigate and prosecute corruption at all levels of government. Efforts should also be made to improve court efficiency, increase awareness of government procedures, strictly enforce right to information and citizen charter laws, audit politician's accounts and assets, and make the police department more independent.
Google dominates the search market with 69% share compared to Bing's 26%. Google aims to provide users with search results faster by anticipating their needs through its Knowledge Graph, which compiles information about topics from various sources on the web. Google also uses authorship and verified online profiles to rank results higher if the content is associated with a known author. For local businesses, factors like name, address, phone number consistency, positive reviews from different sites, and local links can help improve local search rankings on Google.
The document provides an overview of web architecture and related technologies. It discusses:
- The history and basics of the World Wide Web and how it works.
- Key protocols like HTTP and HTTPS, including how requests and responses are structured.
- Common status codes and HTTP verbs used in requests.
- The layers of a web application, including presentation, logical, and data layers.
- Differences between two-tier and three-tier architectures, with two-tier having just client and data tiers while three-tier separates the logical/business tier.
Devopsdays Goteborg 2011 - State of the UnionJohn Willis
The document appears to be a slide deck from a presentation given at DevOpsDays Goteborg 2011. The presentation discusses the history and convergence of the Lean Startup, Velocity, and Agile Infrastructure movements that contributed to the DevOps movement. It also discusses resources for learning more about DevOps including important books, Gene Kim's goals of prescribing how Development, Operations, and InfoSec can work together, and a call for readers to provide feedback on related works.
The presentation is about JavaScriptMVC (JMVC), a JavaScript framework. The agenda includes discussing the needs for a framework, tested frameworks, JMVC itself, and showing some code. The document discusses how frameworks evolve over time as new technologies are incorporated, and similarities between JMVC and Rails, though JMVC is not intended to be identical to Rails. It also briefly mentions FuncUnit, StealJS, jQueryMX and DocumentJS JavaScript libraries.
This document summarizes a presentation about managing CPAN dependencies for web development projects. It describes a case study where a developer installed many CPAN modules for a new web app, but ran into problems with dependency and versioning issues during deployment to production servers. The presenter then introduced their solution called Carton, a tool for creating isolated, local Perl environments for apps and locking dependency versions to allow reproducible, stable deployments across different machines. Key features discussed included dependency declaration, isolated environments, version control, analysis and more. The document concludes with a call for questions and thanks.
The document discusses how Ruby on Rails (RoR) helped during floods in Australia. It describes how Heroku, a Platform as a Service (PaaS), allows developers to deploy RoR applications using a git-based workflow. Heroku manages web and background processes (dynos and workers) and allows scaling by adding more dynos to handle requests.
Watch the video along with the slides at: https://www.youtube.com/watch?v=U7d9f2WY7O8
Randall Hansen of Puppet Labs speaking on "A Usability Tour of Puppet (Warts and All)" at PuppetCamp Europe 2011, Amsterdam, Netherlands.
Patrick Debois gave an introduction to DevOps. He discussed how Agile development improved collaboration between developers and testers but neglected operations teams. Traditional continuous integration models separated development and operations. DevOps aims to bring development and operations teams together through practices like infrastructure as code, configuration management, continuous integration/delivery, and collaboration across roles. Culture and mindset shifts are also important for DevOps, prioritizing collaboration, craftsmanship, and trust between teams.
The document provides an introduction to DevOps concepts including:
- DevOps aims to shorten the period between development and operations through better alignment.
- It is not a product but a cultural and professional movement to address problems like bottlenecks and long wait times between teams.
- Key aspects of DevOps include automating infrastructure provisioning and deployments, measuring performance improvements, and sharing knowledge across teams.
This document appears to be notes from a presentation or talk. It discusses various topics related to Plone, a content management system, including its vision, customers as developers, theories of web development, what makes a good development tool, who Plone currently solves problems for, issues with Buildout and the database, minimizing knowledge and steps needed, and developing by default. The document advocates for making Plone more accessible and developable out of the box.
Generating Print Sales Leads with LinkedIn session 1Joe Kern
This document discusses how to generate print sales leads using LinkedIn. It recommends completing your LinkedIn profile with details like photo, positions, education, and recommendations. It also suggests building your network by searching for contacts from your email and uploading contact lists. The document outlines strategies for lead generation like researching companies and prospects, asking for introductions, and advanced searching on LinkedIn.
Watch along with the video at https://www.youtube.com/watch?v=ag-bI5lr55s
Luke Kanies, CEO and Founder of Puppet Labs, talks on "Making Puppet More Hackable" at PuppetCamp Europe '11, Amsterdam, Netherlands. Learn more: http://www.puppetlabs.com
This document summarizes a lecture on community management and user-generated content. It discusses defining objectives for an online community, understanding what motivates users to participate, and providing opportunities for feedback and collaboration. It also covers strategies for scaling a community through dividing tasks among teams and using appropriate tools. Legal issues like copyright and terms of service are addressed. Overall, the document provides guidance on developing an effective strategy to build and engage an online community.
Plone IDE - the future of Plone developmentMikko Ohtamaa
Plone IDE is an ACE Javascript editor based effort to provide easy and sane Plone development environment aimed for newcomers (though power users will probably enjoy it too).
The document provides an introduction to web crawling and extraction. It begins with an overview of web crawling and extraction, including definitions and examples of motivations for these techniques such as bookmarking sites, extracting business hours, and enabling vertical search. It then discusses desired properties of crawlers like speed, as well as constraints like politeness, distributed scaling, and minimizing overlap. The basic crawling algorithm is presented. Challenges of large-scale crawls are discussed, such as DNS lookups, number of URLs crawled, and politeness.
The document discusses different types of software tests and their purposes. It suggests that unit tests should focus on verifying correctness through line and branch coverage and gaining confidence in individual functions. Integration tests are best for experimenting with third-party code but may be a waste of time testing functionality that is not your own. Functional tests work well early in development to verify requirements and key features but may do too much as code changes rapidly.
The introduction of Kanban as a planning, monitoring and process control tool was a success for a small team. Key benefits included improved planning, ensuring nothing got forgotten with monitoring, and a clear overview. The workflow became optimized with open communication between teams. Some challenges were addressed such as the board being too small and only planning one week ahead.
The document discusses Node.js and how it can be used to build server-side applications using JavaScript. Some key points include:
- Node.js allows for non-blocking, asynchronous programming which improves performance compared to traditional blocking I/O.
- It uses a single thread with event loops to handle multiple connections concurrently without blocking.
- JavaScript is a good choice as it is the language of the web and supports features like closures that are useful for asynchronous programming.
- Node.js has gained popularity due to its ability to build high performance web servers using a non-blocking approach that is accessible to programmers without expertise in asynchronous programming.
The document discusses Node.js and how it can be used to build server-side applications using JavaScript. Some key points include:
- Node.js allows for non-blocking asynchronous programming which improves performance over traditional blocking servers.
- It uses a single thread event loop model that handles all I/O asynchronously, avoiding context switching.
- JavaScript is the language of the web and Node.js allows using JavaScript on the server side for building real-time applications.
- Node.js has an active community and growing ecosystem of packages on npm that can be easily installed and used in applications.
Go, also called golang, is a programming language developed at Google in 2007 and publicly released in 2009. Combined with App Engine AND the AngularJS framework, golang represents the backend solution which completes Google's "developer suite". In spite of its youth, it includes a bunch of powerful features with a low learning curve and great performances, for any desktop platform.
The document summarizes a presentation about the Go programming language given by Gianfranco Reppucci in Rome on April 11-12, 2014. It discusses the evolution of programming languages from monolithic to modular frameworks, introduces Go and its uses at companies like Google, and covers Go features like concurrency, channels, and interfaces. It encourages attendees to try Go and provides references for further information.
1. Isn’t this a design
sofftek developer
Skill traciende lenguajes
Las bases que TODOS debemos
patterns talk?
tener.
Friday, October 14, 2011
2. aqui me pararia y me
largaba
Object Oriented
Design - Basics
Friday, October 14, 2011
3. ME
Como me siento?
Con quienes he
colaborado?
En que cosas te
apasionas?
• Emmanuel Delgado
• Ingeniero de Software para Crowd
Interactive
• UAA, INEGI, Softtek
• PHP, Perl, Javascript, Java, Ruby
• Apasionadazo
• @chischaschos
Friday, October 14, 2011
4. What makes a system
complicated?
code smell, you feel it
mario c nice code, shit happens eveywhere
same old problems
Friday, October 14, 2011
5. un cambio implica tocar
muchos lugares
Rigidity
Friday, October 14, 2011
11. la imagen es la misma
tendencia dificil de entender
codigo puede ser claro y legible
requieres esfuerzo constante
para seguir siendo leguible
Opacity
Friday, October 14, 2011
12. Rotten system usual smells
• Rigidity
• Fragility
ocurren poco a poco un
commit a la vez
• Viscosity
• Immobility
• Unnecessary duplicity and complexity
• Opacity
Friday, October 14, 2011
13. small building blocks
small shapes
Pequeñas formas ->
grandes diseños
Bellos?
Small components design
principles
Friday, October 14, 2011
29. DI - What is a dependency?
dependencia agrega
responsabilidades
responsabilidad da
razones para cambiar
vas a tener que hacer
cambios
entre menos mejor, asi
gastas mas tiempo
creando codigo obra d arte
Friday, October 14, 2011
30. DI - Depend upon abstractions
Si tu clase emplea servicios externos, o tiene
muchas librerias requeridas,
o ves demasiadas constantes, utilizalas tan tarde
como puedas.
Friday, October 14, 2011
31. Basic suggestions
• Only one responsibility per object
• Encapsulate what changes
• Depend upon abstractions
• Delegate responsibilities
• Composition over inheritance
• Extend components, do not reopen them
Friday, October 14, 2011
32. patrones de diseño
alguien identifico
problemas comunes
formas se repiten
evita crear patrones
hasta el ultimo momento
Afterwards common
shapes will arise
Friday, October 14, 2011
33. Observer
• THINK: monitoring
behavior
Friday, October 14, 2011
48. Conclusion
• Follow damn simple principles
• Do not program upon design patterns, let
them arise by themselves
• Refactor to design patterns
Friday, October 14, 2011
52. References - 4
pregunta para ustedes como mantienes el diseño
dia tras dia?
boy scout rule
tdd
refactor all the fucking time
Friday, October 14, 2011