<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>alecor.net</title><link href="https://alecor.net/" rel="alternate"/><link href="https://alecor.net/feeds/all.atom.xml" rel="self"/><id>https://alecor.net/</id><updated>2026-03-22T00:00:00+00:00</updated><entry><title>Buenas Intenciones, Malos Resultados: Por Qué los Controles Económicos Siempre Fallan</title><link href="https://alecor.net/controles-economicos-buenas-intenciones-malos-resultados-es.html" rel="alternate"/><published>2026-03-22T00:00:00+00:00</published><updated>2026-03-22T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2026-03-22:/controles-economicos-buenas-intenciones-malos-resultados-es.html</id><summary type="html">&lt;p&gt;Cuatro mil años de historia demuestran que los controles de precios, los marcos regulatorios mal diseñados y los impuestos sin fundamento no solo no logran sus objetivos declarados, sino que generan exactamente los problemas que pretendían resolver. Este artículo explora por qué ocurre esto, qué nos dice la evidencia histórica y cómo la libertad económica produce mejores resultados para toda la sociedad.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Hay una frase que se repite con asombrosa consistencia a lo largo de la historia económica: &lt;em&gt;"algo hay que hacer."&lt;/em&gt; Frente a una crisis, frente a la inflación, frente a la escasez o la desigualdad, la respuesta instintiva del poder político es intervenir. Fijar un precio. Prohibir una práctica. Crear un organismo de control. Agregar un impuesto.&lt;/p&gt;
&lt;p&gt;Las intenciones suelen ser genuinas. El problema es que las consecuencias casi nunca lo son.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Cuarenta Siglos de la Misma Lección Ignorada&lt;/h2&gt;
&lt;p&gt;En 1978, los economistas Robert Schuettinger y Eamonn Butler publicaron &lt;em&gt;Forty Centuries of Wage and Price Controls&lt;/em&gt;, un trabajo de investigación histórica que documentó algo perturbador: los controles de precios y salarios han sido utilizados por prácticamente todos los gobiernos desde el Egipto faraónico, la Roma imperial y la China dinástica hasta el siglo XX, y en casi todos los casos produjeron exactamente los mismos resultados: escasez, mercados negros, corrupción y empobrecimiento de la población que se pretendía proteger.&lt;/p&gt;
&lt;p&gt;El emperador Diocleciano fijó precios máximos en el año 301 d.C. para frenar la inflación del Imperio Romano. El resultado fue que los productores dejaron de producir y los bienes desaparecieron de los mercados. El edicto fue abandonado pocos años después, pero el daño ya estaba hecho. Mil setecientos años más tarde, Richard Nixon aplicó controles de precios en Estados Unidos en 1971. Las estaciones de servicio amanecieron vacías. Las colas se extendían por cuadras. La escasez de combustible que siguió fue en buena medida consecuencia directa de la intervención, no de la falta de petróleo.&lt;/p&gt;
&lt;p&gt;Henry Hazlitt, en su obra &lt;em&gt;Economics in One Lesson&lt;/em&gt; (1946), sintetizó el error fundamental con una claridad que sigue siendo difícil de superar: el problema de la mayoría de los análisis económicos es que solo ven los efectos inmediatos y visibles de una política, ignorando los efectos diferidos e invisibles. Un control de alquileres, por ejemplo, beneficia visiblemente al inquilino que hoy paga menos. Lo que no se ve es el propietario que decide no alquilar, el inversor que no construye, el edificio que se deteriora porque no hay incentivo para mantenerlo. Diez años después, hay menos viviendas disponibles y peores condiciones para todos.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;El Mecanismo del Fracaso&lt;/h2&gt;
&lt;p&gt;Para entender por qué los controles de precios fallan de manera tan sistemática, es útil comprender qué es un precio en primer lugar.&lt;/p&gt;
&lt;p&gt;Un precio no es un número arbitrario que alguien decide. Es información condensada. Cuando el precio del tomate sube, ese aumento le dice al agricultor que produzca más, al distribuidor que optimice su logística, al consumidor que considere alternativas. Todo ese sistema de señales, que coordina a millones de personas sin que nadie lo dirija, funciona a través de los precios.&lt;/p&gt;
&lt;p&gt;Cuando un gobierno fija un precio máximo por debajo del precio de mercado, interrumpe esa señal. El productor ya no recibe el mensaje de que se necesita más oferta. Al contrario, recibe el mensaje de que producir eso no es rentable. La consecuencia es predecible: menos producción, más escasez. Y la escasez que el control pretendía combatir se vuelve estructural.&lt;/p&gt;
&lt;p&gt;Lo mismo ocurre con los controles de alquileres, con los topes a las tasas de interés, con los precios máximos de medicamentos o de la energía. La forma cambia; la lógica es idéntica.&lt;/p&gt;
&lt;h3&gt;La Segunda Consecuencia: El Mercado Paralelo&lt;/h3&gt;
&lt;p&gt;Cuando el precio oficial deja de reflejar la realidad, la realidad no desaparece. Migra. Nace el mercado informal, el mercado negro, la coima, el favor, la conexión. Lo que antes se resolvía con dinero y transparencia se resuelve ahora con contactos y opacidad. Los que tienen acceso al precio controlado se benefician; los que no, pagan más o simplemente no consiguen el bien.&lt;/p&gt;
&lt;p&gt;El control que se diseñó para proteger al más vulnerable termina siendo, en la práctica, un privilegio para quien tiene llegada al sistema.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Argentina: Un Laboratorio de Noventa Años&lt;/h2&gt;
&lt;p&gt;Pocos países en el mundo ofrecen un estudio de caso tan completo y tan doloroso como Argentina. Un país que a principios del siglo XX era una de las diez economías más ricas del mundo, receptor de millones de inmigrantes europeos que venían a construir una vida mejor, con una clase media sólida, exportaciones agrícolas formidables y una moneda respetada internacionalmente.&lt;/p&gt;
&lt;p&gt;Lo que siguió es una historia de intervenciones sucesivas, cada una diseñada para corregir los problemas que generó la anterior.&lt;/p&gt;
&lt;h3&gt;Las Comunidades que Construyeron lo que el Estado no Podía&lt;/h3&gt;
&lt;p&gt;Uno de los capítulos más reveladores —y menos contados— de esa historia es el de los hospitales de comunidad. Cuando las oleadas de inmigrantes italianos, españoles, ingleses, alemanes, franceses y judíos llegaron a Buenos Aires y al interior del país entre 1880 y 1930, no esperaron que el Estado les proveyera servicios de salud. Se organizaron.&lt;/p&gt;
&lt;p&gt;El &lt;strong&gt;Hospital Italiano de Buenos Aires&lt;/strong&gt;, fundado en 1853, fue creado por la comunidad italiana para atender a sus propios inmigrantes. El &lt;strong&gt;Hospital Británico&lt;/strong&gt;, en 1844, por la colectividad británica. El &lt;strong&gt;Hospital Alemán&lt;/strong&gt;, en 1867, por la comunidad germana. El &lt;strong&gt;Hospital Español&lt;/strong&gt;, el &lt;strong&gt;Hospital Francés&lt;/strong&gt;, el &lt;strong&gt;Hospital Israelita&lt;/strong&gt;: cada uno surgió de la iniciativa privada y comunitaria, de personas que identificaron una necesidad y se organizaron para cubrirla sin esperar permiso ni subsidio.&lt;/p&gt;
&lt;p&gt;Estas instituciones no nacieron del altruismo abstracto ni de la obligación legal. Nacieron del interés concreto de comunidades que querían proteger a los suyos y tenían la libertad de hacerlo. Y el resultado fue —y sigue siendo— una red hospitalaria de primer nivel que atiende a millones de personas, con tecnología de punta, formación médica de excelencia y gestión eficiente.&lt;/p&gt;
&lt;p&gt;El paralelo con el sector público no necesita mucho desarrollo. Los hospitales de comunidad no tienen listas de espera de meses para un turno con un especialista. No tienen quirófanos sin insumos. No tienen enfermeras cobrando salarios de pobreza. La diferencia no es de recursos: es de incentivos, de gestión y de libertad para tomar decisiones.&lt;/p&gt;
&lt;p&gt;Las &lt;strong&gt;mutuales y obras sociales&lt;/strong&gt; contaron una historia similar. Antes de que el Estado monopolizara la salud laboral, los gremios de inmigrantes y los sindicatos de oficio crearon sistemas de cobertura médica voluntaria que funcionaban porque sus socios los financiaban y les exigían resultados. Cuando la legislación fue convirtiendo ese sistema en obligatorio y estatal, los incentivos cambiaron: ya no había que satisfacer al afiliado para retenerlo; había que satisfacer al regulador para sobrevivir. La calidad siguió el camino que la lógica predecía.&lt;/p&gt;
&lt;h3&gt;El Control de Cambios y la Industria que no Llegó&lt;/h3&gt;
&lt;p&gt;En la segunda mitad del siglo XX, Argentina implementó repetidas veces controles cambiarios con el objetivo declarado de proteger las reservas, estabilizar el peso y favorecer la industria nacional. El resultado invariable fue la aparición del dólar paralelo, la fuga de capitales que los controles pretendían evitar, y la destrucción de la confianza inversora.&lt;/p&gt;
&lt;p&gt;Un inversor extranjero que evalúa instalar una planta en Argentina enfrenta una pregunta simple: si el negocio funciona y quiero repatriar mis ganancias, ¿podré hacerlo? Si la respuesta es "depende del gobierno de turno", la inversión no se hace. No porque el inversor sea malvado o anti-argentino, sino porque asumir riesgo empresarial ya es suficientemente difícil sin agregarle riesgo regulatorio arbitrario encima.&lt;/p&gt;
&lt;p&gt;El capital no tiene ideología. Tiene patas. Y cuando el entorno no ofrece certezas, se va a donde sí las hay.&lt;/p&gt;
&lt;h3&gt;El Impuesto que Mata la Semilla&lt;/h3&gt;
&lt;p&gt;Argentina tiene una presión tributaria que, sumando todos los niveles —nacional, provincial, municipal—, puede superar el 50% de los ingresos de una empresa formal mediana. Retenciones a las exportaciones agropecuarias, ingresos brutos que se aplica en cascada, impuesto al cheque, contribuciones patronales, tasas municipales, impuesto a los débitos y créditos bancarios. Cada uno fue creado en un momento de urgencia fiscal con la promesa de ser transitorio.&lt;/p&gt;
&lt;p&gt;El efecto acumulado es devastador para quien intenta hacer las cosas bien. Un productor agrícola que exporta soja paga retenciones sobre el valor bruto de su exportación —no sobre su ganancia— independientemente de si ese año llovió menos, de si el precio internacional bajó, de si sus costos subieron. El impuesto es independiente de la realidad del negocio.&lt;/p&gt;
&lt;p&gt;¿Qué hace un productor racional frente a eso? Invierte menos. Siembra menos. Busca cultivos con menor carga impositiva. O directamente deja la tierra sin producir si los números no cierran. La recaudación que el impuesto pretendía maximizar termina siendo menor que si el impuesto fuera más bajo y hubiera más actividad. Esta relación, formalizada por Arthur Laffer en los años setenta, no es una idea de derecha: es matemática básica. Con una tasa del 100%, nadie produce porque no tiene sentido. Con una tasa del 0%, no hay recaudación. En algún punto intermedio está el máximo; pasado ese punto, subir el impuesto reduce la recaudación.&lt;/p&gt;
&lt;p&gt;Argentina lleva décadas operando al otro lado de ese punto en varios sectores, y lo sabe, y sigue haciéndolo porque la urgencia del corto plazo siempre derrota a la inteligencia del largo plazo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;El Marco Regulatorio como Barrera a la Innovación&lt;/h2&gt;
&lt;p&gt;Más allá de los impuestos y los controles de precios, existe un cuerpo regulatorio más amplio que define si un país es un lugar atractivo para crear, invertir e innovar.&lt;/p&gt;
&lt;p&gt;La &lt;strong&gt;seguridad jurídica&lt;/strong&gt; es el activo más valioso que un Estado puede ofrecer a su sociedad. Un contrato que se cumple. Una sentencia judicial que se ejecuta. Una ley que no cambia de mes a mes. Una propiedad que nadie puede expropiar de manera arbitraria. Cuando esas condiciones existen, el ahorro se convierte en inversión, la inversión en empleo, el empleo en consumo, y el ciclo produce prosperidad.&lt;/p&gt;
&lt;p&gt;Cuando no existen, el dinero se guarda bajo el colchón —literalmente, en el caso argentino—, se convierte en dólares billete y se entierra en el jardín o se lleva al exterior. No porque la gente sea irracional, sino porque es perfectamente racional proteger lo que se tiene ante un Estado que ha demostrado históricamente que puede cambiar las reglas del juego en cualquier momento.&lt;/p&gt;
&lt;h3&gt;El Costo de Emprender&lt;/h3&gt;
&lt;p&gt;El &lt;strong&gt;Doing Business&lt;/strong&gt; del Banco Mundial (antes de que el organismo decidiera discontinuarlo por presiones políticas) medía cuántos días y cuántos pasos requería abrir una empresa en cada país. En los países con menor burocracia —Nueva Zelanda, Dinamarca, Singapur— el proceso tomaba uno o dos días. En muchos países de América Latina, semanas o meses, con docenas de trámites, formularios, habilitaciones y ventanillas.&lt;/p&gt;
&lt;p&gt;Cada día que un emprendedor espera un permiso es un día sin producir, sin contratar, sin generar valor. Multiplicado por millones de emprendedores potenciales que deciden no intentarlo porque el costo burocrático es mayor que el beneficio esperado, el impacto sobre el desarrollo económico es colosal e invisible al mismo tiempo.&lt;/p&gt;
&lt;p&gt;Lo invisible vuelve a ser el enemigo. No vemos la empresa que no se creó. No vemos el empleo que no existió. No vemos la innovación que no llegó. Solo vemos al funcionario que firmó la habilitación y pensamos que hizo su trabajo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Los Ejemplos que Funcionan: Cuando la Libertad Produce Prosperidad&lt;/h2&gt;
&lt;p&gt;La contraparte de esta historia existe y es igualmente instructiva.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Singapur&lt;/strong&gt; en 1965 era una isla sin recursos naturales, con un ingreso per cápita similar al de muchos países africanos. Lee Kuan Yew decidió construir el país sobre la base del estado de derecho, la baja corrupción, la apertura al comercio y la inversión extranjera, y la certeza contractual. Sesenta años después, Singapur tiene un ingreso per cápita mayor que el de muchos países de Europa Occidental.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Irlanda&lt;/strong&gt; en los años noventa era el país más pobre de Europa Occidental. Redujo drásticamente el impuesto a las empresas, simplificó su sistema regulatorio y abrió su economía. En quince años pasó de ser receptor de ayuda a ser exportador de tecnología. El &lt;strong&gt;Tigre Celta&lt;/strong&gt; no fue magia: fue la consecuencia predecible de crear condiciones para que las personas y las empresas crearan valor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Estonia&lt;/strong&gt;, tras la independencia de la Unión Soviética, construyó desde cero un sistema de gobierno digital, con impuesto plano, burocracia mínima y fuerte protección de la propiedad. Hoy es uno de los países con mayor densidad de startups por habitante en Europa y el hogar de empresas como Skype y TransferWise.&lt;/p&gt;
&lt;p&gt;La diferencia entre estos países y aquellos que se estancaron no es de recursos naturales, de tamaño, ni de cultura. Es de marco institucional. Es de cuánto espacio le dejan al individuo para crear, equivocarse, corregir y volver a intentarlo.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;El Argumento Moral de la Libertad Económica&lt;/h2&gt;
&lt;p&gt;Hay una dimensión de esta discusión que suele quedar fuera del análisis técnico: la dimensión moral.&lt;/p&gt;
&lt;p&gt;Cuando el Estado fija un precio, está diciendo que sabe mejor que el vendedor y el comprador cuánto vale algo. Cuando el Estado prohíbe una transacción voluntaria entre adultos, está diciendo que esas personas no son capaces de tomar sus propias decisiones. Cuando el Estado confisca una porción creciente de lo que alguien produce, está enviando un mensaje sobre quién es el propietario real del fruto del trabajo.&lt;/p&gt;
&lt;p&gt;Más allá de las consecuencias económicas —que ya son suficientemente dañinas—, hay un argumento de respeto a la dignidad de las personas. La libertad económica no es un privilegio de los ricos: es la condición que permite al talentoso sin conexiones llegar a donde las conexiones antes no lo dejaban. Es la condición que permitió a millones de inmigrantes sin nada, llegados a América con una valija, construir hospitales, escuelas, empresas y comunidades que beneficiaron a generaciones futuras.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Conclusión: El Problema no son las Intenciones&lt;/h2&gt;
&lt;p&gt;Nadie propone controles de precios queriendo crear escasez. Nadie diseña un sistema impositivo queriendo ahogar a los emprendedores. Nadie construye un laberinto burocrático con el objetivo de frenar la innovación.&lt;/p&gt;
&lt;p&gt;El problema no son las intenciones. El problema es la negativa sistemática a ver las consecuencias no buscadas, los efectos diferidos, los costos invisibles. El problema es que en política económica, como en medicina, el primer principio debería ser &lt;em&gt;primum non nocere&lt;/em&gt;: primero, no hacer daño.&lt;/p&gt;
&lt;p&gt;Cuatro mil años de historia, de Diocleciano a Venezuela pasando por Argentina, demuestran que la intervención bien intencionada produce resultados predecibles: escasez donde había abundancia, corrupción donde había transparencia, estancamiento donde había dinamismo.&lt;/p&gt;
&lt;p&gt;La alternativa no es el caos ni el abandono de los más vulnerables. Es entender que el mejor sistema de protección social que la humanidad ha descubierto es una economía que crece, que genera empleo, que permite que quien no tiene nada pueda construir algo, que convierte el talento y el esfuerzo en prosperidad. Esa economía no surge del decreto ni de la planificación central. Surge de la libertad, del estado de derecho y de la certeza de que las reglas de mañana serán las mismas que las de hoy.&lt;/p&gt;
&lt;p&gt;Los hospitales que la comunidad italiana construyó en Buenos Aires hace ciento setenta años no nacieron de una ley. Nacieron de la libertad de organizarse y de la responsabilidad de cuidar a los suyos. Esa combinación —libertad más responsabilidad— sigue siendo, a pesar de todo, la fórmula más poderosa que conocemos.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Referencias y lecturas recomendadas:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Henry Hazlitt, &lt;em&gt;Economics in One Lesson&lt;/em&gt; (1946)&lt;/li&gt;
&lt;li&gt;Robert Schuettinger y Eamonn Butler, &lt;em&gt;Forty Centuries of Wage and Price Controls&lt;/em&gt; (1978)&lt;/li&gt;
&lt;li&gt;Milton Friedman, &lt;em&gt;Free to Choose&lt;/em&gt; (1980)&lt;/li&gt;
&lt;li&gt;Hernando de Soto, &lt;em&gt;El Misterio del Capital&lt;/em&gt; (2000)&lt;/li&gt;
&lt;li&gt;Deirdre McCloskey, &lt;em&gt;Bourgeois Dignity&lt;/em&gt; (2010)&lt;/li&gt;
&lt;/ul&gt;</content><category term="Insightful"/><category term="economía"/><category term="política"/><category term="argentina"/><category term="libertad"/><category term="sociedad"/><category term="historia"/><category term="Español"/></entry><entry><title>MCP — The Protocol That Connects AI to Everything</title><link href="https://alecor.net/content/2026/03/22/model-context-protocol-mcp.html" rel="alternate"/><published>2026-03-22T00:00:00+00:00</published><updated>2026-03-22T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2026-03-22:/content/2026/03/22/model-context-protocol-mcp.html</id><summary type="html">&lt;p&gt;Model Context Protocol (MCP) is an open standard by Anthropic that gives AI assistants a clean, universal way to connect to tools, data sources, and services. This article explains the architecture, the problem it solves, and walks through building your first MCP server in Python.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;The Problem MCP Solves&lt;/h2&gt;
&lt;p&gt;Every AI assistant — Claude, Copilot, Cursor, you name it — runs into the same wall eventually: the model knows a lot, but it can't &lt;em&gt;do&lt;/em&gt; anything outside its context window. It can't read your database, query your internal API, or check what time it is unless someone explicitly builds that bridge.&lt;/p&gt;
&lt;p&gt;Before MCP, every team building an AI-powered tool had to wire up their own integrations from scratch. Want Claude to search your Notion workspace? Write a custom integration. Want it to query your Postgres database? Write another one. Each integration was one-off, fragile, and non-reusable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt; is Anthropic's answer: an open standard that defines a single, universal interface between AI hosts and the outside world. Build an MCP server once, and any MCP-compatible AI client — Claude Desktop, Claude Code, Cursor, your own app — can use it immediately.&lt;/p&gt;
&lt;p&gt;Think of it like HTTP for AI tools. HTTP didn't invent the web, but it gave every browser and server a shared language. MCP does the same for AI and the services it needs to interact with.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Architecture in Three Parts&lt;/h2&gt;
&lt;p&gt;MCP has three roles:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Host&lt;/strong&gt; — The application the user interacts with. Claude Desktop, Claude Code, Cursor, or your own custom app. The host contains an MCP client that manages connections.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Client&lt;/strong&gt; — Lives inside the host. Maintains a 1:1 connection with an MCP server, handles the protocol negotiation, and routes requests from the model to the server and responses back.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Server&lt;/strong&gt; — An external process (local or remote) that exposes capabilities to the model. This is the part you build. A server can be as simple as a single Python file.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="err"&gt;┌──────────────────────────────────┐&lt;/span&gt;
&lt;span class="err"&gt;│&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="n"&gt;Host&lt;/span&gt;&lt;span class="w"&gt;                 &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;
&lt;span class="err"&gt;│&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;┌──────────┐&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="err"&gt;┌─────────────┐&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;
&lt;span class="err"&gt;│&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="n"&gt;LLM&lt;/span&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="err"&gt;│◄──│&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;MCP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Client&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;
&lt;span class="err"&gt;│&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;└──────────┘&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="err"&gt;└──────┬──────┘&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;
&lt;span class="err"&gt;└─────────────────────────┼────────┘&lt;/span&gt;
&lt;span class="w"&gt;                          &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;MCP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Protocol&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="err"&gt;┌───────────▼──────────┐&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="n"&gt;MCP&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Server&lt;/span&gt;&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="err"&gt;│&lt;/span&gt;
&lt;span class="w"&gt;              &lt;/span&gt;&lt;span class="err"&gt;└──────────────────────┘&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;h2&gt;What Servers Can Expose&lt;/h2&gt;
&lt;p&gt;An MCP server can expose three types of capabilities:&lt;/p&gt;
&lt;h3&gt;Tools&lt;/h3&gt;
&lt;p&gt;Functions the model can call — the most common and useful type. The model decides when to call a tool based on the conversation, receives the result, and incorporates it into its response.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nd"&gt;@mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;query_database&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;Run a read-only SQL query and return results as JSON&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Resources&lt;/h3&gt;
&lt;p&gt;Structured data the model can read — files, database contents, API responses. Resources are identified by URIs and are read on demand.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nd"&gt;@mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;logs://app/recent&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;get_recent_logs&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;Returns the last 100 lines of the application log&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Prompts&lt;/h3&gt;
&lt;p&gt;Reusable prompt templates that the host can surface to users. Useful for standardising common workflows.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nd"&gt;@mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;code_review&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Review this code for bugs, security issues, and style:&lt;/span&gt;&lt;span class="se"&gt;\n\n&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;code&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;h2&gt;Transport: How Clients and Servers Talk&lt;/h2&gt;
&lt;p&gt;MCP supports two transport mechanisms:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;stdio&lt;/strong&gt; — The server runs as a subprocess of the host. Communication happens over stdin/stdout. This is the standard approach for local tools — zero network setup, simple, fast.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;HTTP + SSE&lt;/strong&gt; — The server runs as an HTTP service. The client sends requests over HTTP and receives streaming responses via Server-Sent Events. Used for remote servers or when you need a persistent network service.&lt;/p&gt;
&lt;p&gt;For local development and personal tools, stdio is almost always the right choice.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Building Your First MCP Server in Python&lt;/h2&gt;
&lt;p&gt;Install the SDK:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;pip&lt;span class="w"&gt; &lt;/span&gt;install&lt;span class="w"&gt; &lt;/span&gt;mcp
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Here is a complete, working MCP server that exposes a few useful tools — checking the current time, reading a file, and doing a basic web search via DuckDuckGo's API:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# server.py&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;datetime&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;pathlib&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Path&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;httpx&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;mcp.server.fastmcp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastMCP&lt;/span&gt;

&lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FastMCP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;dev-tools&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;current_datetime&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;Returns the current date and time.&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strftime&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;%Y-%m-&lt;/span&gt;&lt;span class="si"&gt;%d&lt;/span&gt;&lt;span class="s2"&gt; %H:%M:%S&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;read_file&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="sd"&gt;    Read a file from the filesystem and return its contents.&lt;/span&gt;

&lt;span class="sd"&gt;    Args:&lt;/span&gt;
&lt;span class="sd"&gt;        path: Absolute or relative path to the file.&lt;/span&gt;
&lt;span class="sd"&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read_text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;encoding&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;utf-8&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;FileNotFoundError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Error: file not found: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;path&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;Exception&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Error reading file: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;


&lt;span class="nd"&gt;@mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;web_search&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="sd"&gt;    Search the web using DuckDuckGo and return a summary of results.&lt;/span&gt;

&lt;span class="sd"&gt;    Args:&lt;/span&gt;
&lt;span class="sd"&gt;        query: The search query.&lt;/span&gt;
&lt;span class="sd"&gt;        max_results: Number of results to return (default 5).&lt;/span&gt;
&lt;span class="sd"&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;https://api.duckduckgo.com/&amp;quot;&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;q&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;format&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;json&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;no_redirect&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;httpx&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="n"&gt;results&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;topic&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;RelatedTopics&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[])[:&lt;/span&gt;&lt;span class="n"&gt;max_results&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Text&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;topic&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;FirstURL&amp;quot;&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;- &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Text&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;topic&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;FirstURL&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;No results found for: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;results&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;resource&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;env://system&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;system_info&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;Returns basic system information.&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;platform&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;OS: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;platform&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;platform&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;release&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Python: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;platform&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;python_version&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Machine: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;platform&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;machine&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Run it directly to verify it starts without errors:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;python&lt;span class="w"&gt; &lt;/span&gt;server.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;h2&gt;Connecting to Claude Desktop&lt;/h2&gt;
&lt;p&gt;Claude Desktop reads MCP server configuration from a JSON file:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;macOS&lt;/strong&gt;: &lt;code&gt;~/Library/Application Support/Claude/claude_desktop_config.json&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Windows&lt;/strong&gt;: &lt;code&gt;%APPDATA%\Claude\claude_desktop_config.json&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Add your server:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;mcpServers&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;dev-tools&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;command&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;python&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;args&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/absolute/path/to/server.py&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Restart Claude Desktop. A small plug icon appears in the chat interface confirming the server is connected. You can now ask Claude to use any of your tools directly in conversation:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"What time is it?"&lt;/em&gt;
&lt;em&gt;"Read the file at /home/user/notes.txt and summarise it."&lt;/em&gt;
&lt;em&gt;"Search the web for the latest news on Rust 2025."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Claude decides autonomously when to invoke each tool. You don't need to ask explicitly — it will reach for the right tool when the context calls for it.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Connecting to Claude Code&lt;/h2&gt;
&lt;p&gt;In Claude Code (this CLI), MCP servers are configured per-project or globally. Add a server to the project configuration:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;claude&lt;span class="w"&gt; &lt;/span&gt;mcp&lt;span class="w"&gt; &lt;/span&gt;add&lt;span class="w"&gt; &lt;/span&gt;dev-tools&lt;span class="w"&gt; &lt;/span&gt;python&lt;span class="w"&gt; &lt;/span&gt;/absolute/path/to/server.py
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Or edit &lt;code&gt;.claude/settings.json&lt;/code&gt; directly:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;mcpServers&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;dev-tools&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;command&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;python&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="w"&gt;      &lt;/span&gt;&lt;span class="nt"&gt;&amp;quot;args&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;/absolute/path/to/server.py&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;hr&gt;
&lt;h2&gt;A More Realistic Example: Database Tools&lt;/h2&gt;
&lt;p&gt;Here is a more production-shaped example — an MCP server that exposes read-only access to a SQLite database:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c1"&gt;# db_server.py&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;sqlite3&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;json&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;mcp.server.fastmcp&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;FastMCP&lt;/span&gt;

&lt;span class="n"&gt;DB_PATH&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;app.db&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;mcp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;FastMCP&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;database&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;list_tables&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;List all tables in the database.&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DB_PATH&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;tables&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="s2"&gt;&amp;quot;SELECT name FROM sqlite_master WHERE type=&amp;#39;table&amp;#39; ORDER BY name&amp;quot;&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fetchall&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;t&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;t&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;tables&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;


&lt;span class="nd"&gt;@mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;describe_table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="sd"&gt;    Return the schema for a table.&lt;/span&gt;

&lt;span class="sd"&gt;    Args:&lt;/span&gt;
&lt;span class="sd"&gt;        table: Table name.&lt;/span&gt;
&lt;span class="sd"&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DB_PATH&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;cols&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;PRAGMA table_info(&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;table&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;)&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fetchall&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;nullable&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;pk&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;])}&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;cols&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="nd"&gt;@mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tool&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;query&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="sd"&gt;&amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
&lt;span class="sd"&gt;    Run a read-only SQL SELECT query.&lt;/span&gt;

&lt;span class="sd"&gt;    Args:&lt;/span&gt;
&lt;span class="sd"&gt;        sql: A SELECT statement. INSERT/UPDATE/DELETE are rejected.&lt;/span&gt;
&lt;span class="sd"&gt;    &amp;quot;&amp;quot;&amp;quot;&lt;/span&gt;
    &lt;span class="n"&gt;sql_stripped&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;upper&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;sql_stripped&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;SELECT&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;Error: only SELECT queries are permitted.&amp;quot;&lt;/span&gt;

    &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DB_PATH&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;row_factory&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sqlite3&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Row&lt;/span&gt;
        &lt;span class="n"&gt;rows&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;conn&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sql&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fetchall&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;dumps&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;indent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;default&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="vm"&gt;__name__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;__main__&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;mcp&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;run&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;With this connected to Claude, you can have a natural-language conversation about your database:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"What tables do we have?"&lt;/em&gt;
&lt;em&gt;"Show me the last 10 orders with a value over £500."&lt;/em&gt;
&lt;em&gt;"How many users signed up each month this year?"&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Claude translates your intent into SQL, calls the &lt;code&gt;query&lt;/code&gt; tool, and presents the results — without ever needing to write the query yourself.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Security Considerations&lt;/h2&gt;
&lt;p&gt;MCP servers run with the same permissions as the process that starts them. A few rules of thumb:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Only expose what is needed.&lt;/strong&gt; Don't create a general &lt;code&gt;run_shell_command&lt;/code&gt; tool unless you have a very strong reason.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Validate inputs.&lt;/strong&gt; Treat tool arguments like any other external input — they come from an LLM that can be prompted by users.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enforce read-only where appropriate.&lt;/strong&gt; The database example above rejects anything other than &lt;code&gt;SELECT&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Be careful with file access.&lt;/strong&gt; If you build a &lt;code&gt;read_file&lt;/code&gt; tool, consider restricting it to a specific directory rather than accepting arbitrary paths.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;The Bigger Picture&lt;/h2&gt;
&lt;p&gt;MCP is still young but the adoption curve is steep. Within months of launch, hundreds of servers appeared in the wild — for GitHub, Slack, Postgres, Kubernetes, web browsers, vector databases, and more. Because the protocol is open, any tool you build works across all compatible hosts — today Claude Desktop and Claude Code, soon many others.&lt;/p&gt;
&lt;p&gt;The pattern it enables is powerful: instead of fine-tuning a model to know about your specific systems, you give the model the &lt;em&gt;ability to look things up&lt;/em&gt; at runtime. The model stays general; the tools make it specific to your context. That separation is cleaner, more maintainable, and easier to audit than trying to bake domain knowledge into weights.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io"&gt;MCP official documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/modelcontextprotocol/python-sdk"&gt;MCP Python SDK on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/modelcontextprotocol/servers"&gt;MCP server registry&lt;/a&gt; — reference implementations for GitHub, Slack, Postgres, filesystem, and more&lt;/li&gt;
&lt;li&gt;&lt;a href="https://modelcontextprotocol.io/quickstart/user"&gt;Claude Desktop MCP guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Dev"/><category term="AI"/><category term="LLMs"/><category term="MCP"/><category term="python"/><category term="software development"/><category term="tools"/><category term="agents"/><category term="English"/></entry><entry><title>LLM and RAG Evaluation: Metrics, Best Practices</title><link href="https://alecor.net/content/2026/02/08/llm-rag-evaluation-metrics-best-practices.html" rel="alternate"/><published>2026-02-08T00:00:00+00:00</published><updated>2026-02-08T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2026-02-08:/content/2026/02/08/llm-rag-evaluation-metrics-best-practices.html</id><summary type="html">&lt;p&gt;This article provides a concise reference for evaluating large language models (LLMs) and retrieval-augmented generation (RAG) systems. It covers core metrics like accuracy, F1, BLEU, ROUGE, and perplexity, and highlights recent advancements in safety, alignment, semantic evaluation, hallucination detection, operational metrics, and multilingual performance. A practical bullet-point workflow is included for both research and production settings.&lt;/p&gt;</summary><content type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;LLM evaluation is essential for tuning models and optimizing RAG, impacting accuracy, trust, and real-world usefulness.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Core metrics span quality and efficiency: accuracy, precision, recall, F1, BLEU, ROUGE, perplexity, human evaluation, latency, and computational efficiency.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RAG needs two layers of measurement: retrieval quality (retrieval accuracy, relevance) and generation quality (coherence, coverage).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;High precision reduces noise in answers, high recall ensures completeness; F1 balances both for practical deployment.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;BLEU and ROUGE compare outputs to references; BLEU emphasizes surface form fidelity, while ROUGE (including ROUGE-L) captures content coverage and structural similarity.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Perplexity gauges fluency, but must be paired with task metrics and human review to detect hallucinations, bias, or factual errors.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Human evaluation remains the gold standard for coherence, usefulness, safety, and alignment, complementing automated scores.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Benchmarks like GLUE, SuperGLUE, and SQuAD provide standardized tests for general language understanding and QA performance relevant to RAG.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A clear evaluation workflow helps: define objectives, select aligned metrics, run benchmarks, add human review, analyze trade-offs, and iterate.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Alignment and safety evaluation assess harmful outputs, bias, misinformation, and robustness via red-teaming, adversarial prompts, and alignment benchmarks (e.g., BBQ).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;User-centric and task-specific metrics measure task success rates, user satisfaction, and conversational quality in real usage contexts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Semantic and embedding-based metrics (e.g., cosine similarity, BERTScore, BLEURT) better capture meaning beyond n-gram overlap.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Faithfulness and hallucination evaluation checks whether outputs are grounded in retrieved evidence using fact-consistency, QA-based, or contrastive methods.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Retrieval evaluation extends beyond relevance to include recall@K, precision@K, diversity, robustness, and index latency trade-offs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Operational metrics capture production constraints such as throughput (QPS), scalability, cost per query, and resource efficiency.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Continuous and online evaluation uses A/B testing, canary deployments, and drift detection to monitor performance over time.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Explainability and transparency metrics assess evidence traceability, explanation quality, and interpretability of reasoning steps in RAG systems.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Multilingual and scale-aware evaluation covers cross-lingual retrieval and generation, zero-shot and few-shot performance, and multilingual benchmarks (e.g., XTREME).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><category term="Data Science"/><category term="Python"/><category term="Data Science"/><category term="AI Products"/><category term="MLOps"/><category term="LLMs"/><category term="RAG"/><category term="Evaluation"/><category term="NLP"/><category term="English"/></entry><entry><title>Multi-Step AI Agent Evaluation: Metrics, Best Practices</title><link href="https://alecor.net/content/2026/02/08/multi-step-ai-agent-evaluation.html" rel="alternate"/><published>2026-02-08T00:00:00+00:00</published><updated>2026-02-08T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2026-02-08:/content/2026/02/08/multi-step-ai-agent-evaluation.html</id><summary type="html">&lt;p&gt;This article provides a concise reference for evaluating multi-step AI agents and agentic systems. It covers core metrics for task completion, reasoning, and efficiency, and highlights recent advances in safety, alignment, semantic evaluation, plan consistency, and online monitoring. A practical bullet-point workflow is included for both research and production contexts.&lt;/p&gt;</summary><content type="html">&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Evaluation is essential for tuning multi-step AI agents, optimizing reasoning chains, and ensuring reliability, safety, and real-world usefulness.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Core metrics span task success, plan correctness, reasoning coherence, efficiency, and resource usage: completion rate, error rate, reward achievement, step-level accuracy, latency, and compute cost.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Multi-step agents require layered evaluation: &lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Plan/reasoning quality:&lt;/strong&gt; logical coherence, step validity, goal alignment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Execution quality:&lt;/strong&gt; final task success, adherence to constraints, robustness to environment changes.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Operational metrics:&lt;/strong&gt; latency, throughput, scalability, and cost efficiency.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Task success vs. plan fidelity: high plan correctness reduces error propagation; high task success ensures goal completion; combined metrics guide deployment trade-offs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Step-level evaluation metrics include per-step accuracy, action relevance, and reasoning consistency.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Trajectory and plan evaluation compares actual execution to reference trajectories or expected reasoning paths using similarity or alignment measures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Semantic and embedding-based evaluation assesses reasoning outputs and intermediate steps for meaning, relevance, and factual grounding.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Faithfulness and hallucination checks ensure agent steps remain grounded in the environment or retrieved knowledge, with consistency and traceability checks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Safety, alignment, and robustness evaluation tests for harmful actions, unsafe reasoning, adversarial prompts, and constraint violations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;User- and task-centric evaluation measures real-world effectiveness: user satisfaction, completion rate, efficiency, and contextual success.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Operational and deployment metrics capture throughput, resource usage, cost per task, and environmental impact.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Continuous and online evaluation tracks agent performance over time via A/B testing, canary deployments, drift detection, and failure monitoring.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Explainability and transparency metrics evaluate clarity of reasoning, traceability of decisions, and interpretability of action sequences.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Multi-agent and multi-step evaluation considers coordination, conflict resolution, and collaborative task performance in environments with multiple agents.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Multilingual and domain-adapted evaluation checks reasoning and task execution across languages, domains, and unseen contexts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A clear evaluation workflow helps: define objectives, select metrics aligned to goals, run simulations and benchmark tasks, add human review, analyze step-level and task-level results, and iterate continuously.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><category term="Data Science"/><category term="AI Agents"/><category term="Multi-Step Reasoning"/><category term="MLOps"/><category term="Evaluation"/><category term="RL"/><category term="LLMs"/><category term="AI"/><category term="GenAI"/><category term="English"/></entry><entry><title>Core Concepts Behind Modern AI Systems</title><link href="https://alecor.net/content/2026/02/07/core-concepts-modern-ai-systems.html" rel="alternate"/><published>2026-02-07T00:00:00+00:00</published><updated>2026-02-07T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2026-02-07:/content/2026/02/07/core-concepts-modern-ai-systems.html</id><summary type="html">&lt;p&gt;Modern AI systems may look diverse on the surface, but under the hood they rely on a small set of recurring architectural and training ideas. This article distills foundational concepts—ranging from tokenization and decoding to RAG, diffusion models, and LoRA—that every ML engineer should understand to design, debug, and reason about real-world AI systems.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Most modern AI products are built on the same small set of foundational ideas. If you understand these ideas, you’ll start to recognize them everywhere — from large language models to image and video generation systems.&lt;/p&gt;
&lt;p&gt;This post is written as a &lt;strong&gt;conceptual summary&lt;/strong&gt; who want a compact mental model of how today’s AI systems are assembled.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1. Tokenization&lt;/h2&gt;
&lt;p&gt;Neural networks like large language models (LLMs) cannot work with raw text directly. Instead, text is first broken down into smaller units called &lt;strong&gt;tokens&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A tokenizer:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Splits text into pieces (tokens)&lt;/li&gt;
&lt;li&gt;Maps each token to an integer ID&lt;/li&gt;
&lt;li&gt;Produces a sequence of integers that the model can process&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;Raw Text
   |
   v
+------------------+
|   Tokenizer     |
+------------------+
   |
   v
[&amp;quot;walk&amp;quot;, &amp;quot;ing&amp;quot;]          → Tokens
   |
   v
[  5231,   987 ]         → Token IDs
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;One of the most common tokenization algorithms is &lt;strong&gt;Byte Pair Encoding (BPE)&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;How BPE works&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Starts with very small units (often bytes or characters)&lt;/li&gt;
&lt;li&gt;Repeatedly merges the most frequent adjacent pairs&lt;/li&gt;
&lt;li&gt;Over time, common fragments like &lt;code&gt;ing&lt;/code&gt; or &lt;code&gt;tion&lt;/code&gt; become single tokens&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example, the word &lt;em&gt;walking&lt;/em&gt; might be split as:&lt;/p&gt;
&lt;p&gt;walk + ing&lt;/p&gt;
&lt;p&gt;This approach balances vocabulary size, generalization, and efficiency.&lt;/p&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Models don’t "see words", they see pieces of words.&lt;/li&gt;
&lt;li&gt;Pricing, latency, and context limits are all based on tokens, not characters or sentences.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Why this matters&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Long prompts and verbose outputs increase cost.&lt;/li&gt;
&lt;li&gt;Poorly structured text (logs, JSON, markup) can consume tokens faster than expected.&lt;/li&gt;
&lt;li&gt;Different languages tokenize very differently—this can impact multilingual products.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;2. Text Decoding&lt;/h2&gt;
&lt;p&gt;An LLM does not output text directly.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nv"&gt;Previous&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Tokens&lt;/span&gt;
[&lt;span class="s2"&gt;&amp;quot;The&amp;quot;&lt;/span&gt;,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;cat&amp;quot;&lt;/span&gt;,&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;is&amp;quot;&lt;/span&gt;]
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;v&lt;/span&gt;
&lt;span class="o"&gt;+------------------------+&lt;/span&gt;
&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;LLM&lt;/span&gt;&lt;span class="w"&gt;             &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="o"&gt;+------------------------+&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;v&lt;/span&gt;
&lt;span class="nv"&gt;Probability&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Distribution&lt;/span&gt;
{&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;sleeping&amp;quot;&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;.&lt;span class="mi"&gt;42&lt;/span&gt;,
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;running&amp;quot;&lt;/span&gt;:&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;.&lt;span class="mi"&gt;21&lt;/span&gt;,
&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;hungry&amp;quot;&lt;/span&gt;:&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;.&lt;span class="mi"&gt;10&lt;/span&gt;,
&lt;span class="w"&gt;  &lt;/span&gt;...&lt;span class="w"&gt; &lt;/span&gt;}
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;v&lt;/span&gt;
&lt;span class="nv"&gt;Decoding&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Strategy&lt;/span&gt;
&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;Greedy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Top&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="nv"&gt;p&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Temp&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="w"&gt;        &lt;/span&gt;&lt;span class="nv"&gt;v&lt;/span&gt;
&lt;span class="k"&gt;Next&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nv"&gt;Token&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;→&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;sleeping&amp;quot;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;At each step, it produces a &lt;strong&gt;probability distribution over the vocabulary&lt;/strong&gt; for the next token.&lt;/p&gt;
&lt;p&gt;A decoding algorithm:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chooses one token from that distribution&lt;/li&gt;
&lt;li&gt;Appends it to the sequence&lt;/li&gt;
&lt;li&gt;Repeats until a full response is produced&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Common decoding strategies&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Greedy decoding&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Always selects the most likely token&lt;/li&gt;
&lt;li&gt;Useful for deterministic tasks&lt;/li&gt;
&lt;li&gt;Produces bland or repetitive output for creative tasks&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Sampling-based decoding&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduces controlled randomness&lt;/li&gt;
&lt;li&gt;Improves diversity and expressiveness&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A widely used method is &lt;strong&gt;top-p (nucleus) sampling&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Selects the smallest set of tokens whose probabilities sum to &lt;code&gt;p&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Samples the next token from that set&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Decoding is a critical design choice that directly shapes model behavior.&lt;/p&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Decoding is not about accuracy - it's about personality.&lt;/li&gt;
&lt;li&gt;Low temperature / greedy decoding → cautious, repetitive, safe.&lt;/li&gt;
&lt;li&gt;Higher temperature / sampling → creative, diverse, but less predictable.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Why this matters&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Customer support bots usually want boring and correct.&lt;/li&gt;
&lt;li&gt;Brainstorming or marketing tools want diverse and surprising.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;3. Prompt Engineering&lt;/h2&gt;
&lt;p&gt;Vague prompts usually lead to vague answers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prompt engineering&lt;/strong&gt; is the practice of shaping instructions and context to steer a model’s behavior &lt;em&gt;without modifying its weights&lt;/em&gt;.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="nb"&gt;+----------------------+&lt;/span&gt;
&lt;span class="c"&gt;|      Prompt          |&lt;/span&gt;
&lt;span class="c"&gt;|&lt;/span&gt;&lt;span class="nb"&gt;----------------------&lt;/span&gt;&lt;span class="c"&gt;|&lt;/span&gt;
&lt;span class="c"&gt;| Instructions         |&lt;/span&gt;
&lt;span class="c"&gt;| Constraints          |&lt;/span&gt;
&lt;span class="c"&gt;| Examples (optional)  |&lt;/span&gt;
&lt;span class="nb"&gt;+----------------------+&lt;/span&gt;
&lt;span class="c"&gt;           |&lt;/span&gt;
&lt;span class="c"&gt;           v&lt;/span&gt;
&lt;span class="nb"&gt;+----------------------+&lt;/span&gt;
&lt;span class="c"&gt;|        LLM           |&lt;/span&gt;
&lt;span class="nb"&gt;+----------------------+&lt;/span&gt;
&lt;span class="c"&gt;           |&lt;/span&gt;
&lt;span class="c"&gt;           v&lt;/span&gt;
&lt;span class="c"&gt;Structured / Targeted Output&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;A strong prompt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Clearly states the task&lt;/li&gt;
&lt;li&gt;Defines constraints&lt;/li&gt;
&lt;li&gt;Specifies the expected output format&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Common techniques&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Few-shot prompting&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Provide a small number of examples&lt;/li&gt;
&lt;li&gt;The model imitates the demonstrated style and structure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Chain-of-thought prompting&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ask the model to reason step by step&lt;/li&gt;
&lt;li&gt;Improves performance on multi-step tasks like math and coding&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prompt engineering is popular because it is fast, cheap, and highly iterative compared to training or fine-tuning.&lt;/p&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;p&gt;Prompting is product design.&lt;/p&gt;
&lt;p&gt;For many AI products, the prompt is the business logic.&lt;/p&gt;
&lt;p&gt;It encodes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rules&lt;/li&gt;
&lt;li&gt;Brand voice&lt;/li&gt;
&lt;li&gt;Safety constraints&lt;/li&gt;
&lt;li&gt;Output structure&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is why prompt changes often have outsized impact compared to model changes. Prompts are versioned assets.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. Multi-Step AI Agents&lt;/h2&gt;
&lt;p&gt;An LLM by itself can only generate text. It cannot:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Browse the web&lt;/li&gt;
&lt;li&gt;Call APIs&lt;/li&gt;
&lt;li&gt;Run code&lt;/li&gt;
&lt;li&gt;Interact with external systems&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Multi-step agents&lt;/strong&gt; wrap an LLM in a control loop with access to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tools&lt;/li&gt;
&lt;li&gt;Memory&lt;/li&gt;
&lt;li&gt;External environments&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;        |      Goal      |&lt;/span&gt;
&lt;span class="c"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;                 |&lt;/span&gt;
&lt;span class="c"&gt;                 v&lt;/span&gt;
&lt;span class="c"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;        |      LLM       |&lt;/span&gt;
&lt;span class="c"&gt;        |  (Planner)    |&lt;/span&gt;
&lt;span class="c"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;                 |&lt;/span&gt;
&lt;span class="c"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;+--------+--------+&lt;/span&gt;
&lt;span class="c"&gt;        |                 |&lt;/span&gt;
&lt;span class="c"&gt;        v                 v&lt;/span&gt;
&lt;span class="c"&gt;   Call Tool         Generate Text&lt;/span&gt;
&lt;span class="c"&gt;        |&lt;/span&gt;
&lt;span class="c"&gt;        v&lt;/span&gt;
&lt;span class="nb"&gt;+--------------------+&lt;/span&gt;
&lt;span class="c"&gt;| External System    |&lt;/span&gt;
&lt;span class="c"&gt;| (API / Code / DB)  |&lt;/span&gt;
&lt;span class="nb"&gt;+--------------------+&lt;/span&gt;
&lt;span class="c"&gt;        |&lt;/span&gt;
&lt;span class="c"&gt;        v&lt;/span&gt;
&lt;span class="c"&gt;   Observation&lt;/span&gt;
&lt;span class="c"&gt;        |&lt;/span&gt;
&lt;span class="c"&gt;        &lt;/span&gt;&lt;span class="nb"&gt;+-----&lt;/span&gt;&lt;span class="nv"&gt;&amp;gt;&lt;/span&gt;&lt;span class="c"&gt; back to LLM&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The agent:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Plans a step&lt;/li&gt;
&lt;li&gt;Calls a tool&lt;/li&gt;
&lt;li&gt;Observes the result&lt;/li&gt;
&lt;li&gt;Decides what to do next&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This loop continues until the agent reaches a goal, exhausts its budget, or determines it cannot make further progress.&lt;/p&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Agents trade predictability for capability.&lt;/li&gt;
&lt;li&gt;More autonomy → more things can go wrong.&lt;/li&gt;
&lt;li&gt;Tool access introduces security and cost considerations.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Debugging failures often requires replaying the agent's reasoning steps.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Agents are best for bounded workflows, not open-ended autonomy.&lt;/li&gt;
&lt;li&gt;Clear stop conditions and budgets are critical.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;5. Retrieval-Augmented Generation (RAG)&lt;/h2&gt;
&lt;p&gt;A plain LLM answers questions using only what is stored in its weights. This makes it prone to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hallucinations&lt;/li&gt;
&lt;li&gt;Outdated knowledge&lt;/li&gt;
&lt;li&gt;Missing private or proprietary data&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Retrieval-Augmented Generation (RAG)&lt;/strong&gt; pairs an LLM with a retrieval system backed by an external knowledge store.&lt;/p&gt;
&lt;h3&gt;How RAG works&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;A retriever fetches relevant passages from documents, PDFs, or databases&lt;/li&gt;
&lt;li&gt;The LLM uses those passages as context to generate an answer&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c"&gt;User Query&lt;/span&gt;
&lt;span class="c"&gt;    |&lt;/span&gt;
&lt;span class="c"&gt;    v&lt;/span&gt;
&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;|   Retriever   |&lt;/span&gt;
&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;    |&lt;/span&gt;
&lt;span class="c"&gt;    v&lt;/span&gt;
&lt;span class="c"&gt;Relevant Chunks&lt;/span&gt;
&lt;span class="k"&gt;[&lt;/span&gt;&lt;span class="c"&gt;Doc A&lt;/span&gt;&lt;span class="nt"&gt;,&lt;/span&gt;&lt;span class="c"&gt; Doc C&lt;/span&gt;&lt;span class="k"&gt;]&lt;/span&gt;
&lt;span class="c"&gt;    |&lt;/span&gt;
&lt;span class="c"&gt;    v&lt;/span&gt;
&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;|      LLM       |&lt;/span&gt;
&lt;span class="c"&gt;| (Query &lt;/span&gt;&lt;span class="nb"&gt;+&lt;/span&gt;&lt;span class="c"&gt; Docs) |&lt;/span&gt;
&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;    |&lt;/span&gt;
&lt;span class="c"&gt;    v&lt;/span&gt;
&lt;span class="c"&gt;Grounded Answer&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;RAG grounds model outputs in &lt;strong&gt;verifiable external evidence&lt;/strong&gt;, making systems more reliable and auditable.&lt;/p&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;p&gt;RAG is how organizations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keep proprietary data private.&lt;/li&gt;
&lt;li&gt;Update knowledge without retraining models.&lt;/li&gt;
&lt;li&gt;Provide audit trails ("this answer came from these documents").&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;RAG failures often look like reasoning failures, but are actually retrieval failures.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;6. Reinforcement Learning from Human Feedback (RLHF)&lt;/h2&gt;
&lt;p&gt;The success of ChatGPT was driven in large part by &lt;strong&gt;Reinforcement Learning from Human Feedback (RLHF)&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;RLHF works as follows:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="c"&gt;Prompt&lt;/span&gt;
&lt;span class="c"&gt;  |&lt;/span&gt;
&lt;span class="c"&gt;  v&lt;/span&gt;
&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;|   Base LLM     |&lt;/span&gt;
&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;  |&lt;/span&gt;
&lt;span class="c"&gt;  v&lt;/span&gt;
&lt;span class="c"&gt;Multiple Outputs&lt;/span&gt;
&lt;span class="c"&gt;(A&lt;/span&gt;&lt;span class="nt"&gt;,&lt;/span&gt;&lt;span class="c"&gt; B&lt;/span&gt;&lt;span class="nt"&gt;,&lt;/span&gt;&lt;span class="c"&gt; C)&lt;/span&gt;
&lt;span class="c"&gt;  |&lt;/span&gt;
&lt;span class="c"&gt;  v&lt;/span&gt;
&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;| Reward Model   |&lt;/span&gt;
&lt;span class="c"&gt;| (Human prefs)  |&lt;/span&gt;
&lt;span class="nb"&gt;+----------------+&lt;/span&gt;
&lt;span class="c"&gt;  |&lt;/span&gt;
&lt;span class="c"&gt;  v&lt;/span&gt;
&lt;span class="c"&gt;Scores&lt;/span&gt;
&lt;span class="c"&gt;(A: 0&lt;/span&gt;&lt;span class="nt"&gt;.&lt;/span&gt;&lt;span class="c"&gt;9&lt;/span&gt;&lt;span class="nt"&gt;,&lt;/span&gt;&lt;span class="c"&gt; B: 0&lt;/span&gt;&lt;span class="nt"&gt;.&lt;/span&gt;&lt;span class="c"&gt;4)&lt;/span&gt;
&lt;span class="c"&gt;  |&lt;/span&gt;
&lt;span class="c"&gt;  v&lt;/span&gt;
&lt;span class="c"&gt;Policy Update&lt;/span&gt;
&lt;span class="c"&gt;(Higher reward ↑)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;The model generates multiple candidate responses&lt;/li&gt;
&lt;li&gt;A separate reward model scores them&lt;/li&gt;
&lt;li&gt;The training algorithm updates the model’s weights&lt;/li&gt;
&lt;li&gt;Higher-scoring behaviors become more likely&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Why RLHF matters&lt;/h3&gt;
&lt;p&gt;The reward model is trained using &lt;strong&gt;human preference data&lt;/strong&gt;, often from pairs of responses where annotators choose the better one.&lt;/p&gt;
&lt;p&gt;This pushes models toward outputs that humans consistently rate as:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More helpful&lt;/li&gt;
&lt;li&gt;Clearer&lt;/li&gt;
&lt;li&gt;Safer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Not merely statistically probable.&lt;/p&gt;
&lt;h3&gt;Product insight&lt;/h3&gt;
&lt;p&gt;RLHF is why models:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Refuse certain requests.&lt;/li&gt;
&lt;li&gt;Explain themselves.&lt;/li&gt;
&lt;li&gt;Apologize or hedge.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These behaviors are learned preferences—not hard-coded rules.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;7. Variational Autoencoders (VAEs)&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;Variational Autoencoder (VAE)&lt;/strong&gt; is a generative model that learns a probability distribution over data.&lt;/p&gt;
&lt;p&gt;A VAE consists of:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;Input&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Data&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;
&lt;span class="o"&gt;+-----------+&lt;/span&gt;
&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Encoder&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="o"&gt;+-----------+&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;
&lt;span class="n"&gt;Latent&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Space&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;z&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;mean&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;variance&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;
&lt;span class="o"&gt;+-----------+&lt;/span&gt;
&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Decoder&lt;/span&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="o"&gt;+-----------+&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="n"&gt;v&lt;/span&gt;
&lt;span class="n"&gt;Reconstructed&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Generated&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;Data&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;An &lt;strong&gt;encoder&lt;/strong&gt; that maps inputs to a low-dimensional latent space&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;decoder&lt;/strong&gt; that reconstructs data from latent vectors&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Training and generation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Training optimizes a reconstruction objective&lt;/li&gt;
&lt;li&gt;New data can be generated by sampling from the latent space&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In modern text-to-image and text-to-video systems (e.g. OpenAI’s Sora), VAEs are often used as &lt;strong&gt;latent compressors&lt;/strong&gt;, enabling downstream models to operate efficiently in smaller, structured spaces.&lt;/p&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;p&gt;A VAE learns a compressed language for images or videos. Instead of working with pixels, downstream models work with concepts.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;8. Diffusion Models&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Diffusion models&lt;/strong&gt; generate data by learning to reverse a gradual noising process.&lt;/p&gt;
&lt;h3&gt;Training&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;Real Image
    |
    v
x₀ → x₁ → x₂ → ... → xₜ
(add noise)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Start with real samples (such as images)&lt;/li&gt;
&lt;li&gt;Add noise over many time steps&lt;/li&gt;
&lt;li&gt;Train a model to predict the noise given:&lt;/li&gt;
&lt;li&gt;The noisy input&lt;/li&gt;
&lt;li&gt;The time step&lt;/li&gt;
&lt;li&gt;Optional conditioning (e.g. text)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Inference&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;Pure Noise
    |
    v
xₜ → xₜ₋₁ → xₜ₋₂ → ... → x₀
(remove noise)
    |
    v
Generated Image / Video
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Start from pure noise&lt;/li&gt;
&lt;li&gt;Iteratively apply the learned denoising process&lt;/li&gt;
&lt;li&gt;Converge toward a clean sample&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Diffusion models power many state-of-the-art image and video generation systems.&lt;/p&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;p&gt;Diffusion models are like sculptors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Start with a block of noise.&lt;/li&gt;
&lt;li&gt;Gradually remove randomness.&lt;/li&gt;
&lt;li&gt;Shape the output step by step.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;9. Low-Rank Adaptation (LoRA)&lt;/h2&gt;
&lt;p&gt;Large models are general-purpose but often underperform in specialized domains.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Low-Rank Adaptation (LoRA)&lt;/strong&gt; is an efficient fine-tuning technique that adapts a pre-trained model without updating all of its parameters.&lt;/p&gt;
&lt;h3&gt;How LoRA works&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;Frozen Base Weights (W)
        |
        +----------------------+
        |                      |
        v                      v
   Low-Rank A             Low-Rank B
   (trainable)            (trainable)
        \                      /
         \                    /
          +---- Added Delta ---+
                   |
                   v
            Adapted Behavior
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Base model weights remain frozen&lt;/li&gt;
&lt;li&gt;Small low-rank trainable matrices are injected into specific layers&lt;/li&gt;
&lt;li&gt;Domain-specific behavior is learned with far fewer parameters&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;LoRA enables fast, cheap, and scalable specialization.&lt;/p&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;p&gt;LoRA enables:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faster experiments.&lt;/li&gt;
&lt;li&gt;Lower infrastructure cost.&lt;/li&gt;
&lt;li&gt;Multiple specialized versions of the same base model.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is why teams can ship domain-specific AI features without training from scratch.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;How these concepts fit together in real products&lt;/h2&gt;
&lt;p&gt;Most production AI systems are composites, not single models:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prompting + decoding shape behavior.&lt;/li&gt;
&lt;li&gt;RAG supplies trusted knowledge.&lt;/li&gt;
&lt;li&gt;Agents orchestrate tools.&lt;/li&gt;
&lt;li&gt;LoRA customizes domain behavior.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Understanding these building blocks helps product teams:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ask better questions.&lt;/li&gt;
&lt;li&gt;Diagnose failures faster.&lt;/li&gt;
&lt;li&gt;Make informed tradeoffs between cost, quality, and speed.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;These concepts form the backbone of most modern AI systems. They are the recurring building blocks behind today’s most capable AI models — and very likely tomorrow's.&lt;/p&gt;</content><category term="Data Science"/><category term="Machine Learning"/><category term="data science"/><category term="AI"/><category term="ML"/><category term="LLMs"/><category term="Generative AI"/><category term="MLOps"/><category term="Deep Learning"/><category term="English"/></entry><entry><title>Core Tools in the Modern Python Data Analytics Stack</title><link href="https://alecor.net/content/2026/02/07/core-tools-modern-python-data-analytics-stack.html" rel="alternate"/><published>2026-02-07T00:00:00+00:00</published><updated>2026-02-07T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2026-02-07:/content/2026/02/07/core-tools-modern-python-data-analytics-stack.html</id><summary type="html">&lt;p&gt;Modern data and AI products are built on a small set of recurring Python tools for data processing, visualization, interfaces, and APIs. This article provides a concise conceptual overview of Pandas, Polars, visualization libraries, dashboard frameworks, and backend web frameworks—highlighting how they fit together in real-world systems.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Most modern data and AI products rely on a familiar toolbox of Python libraries. While these tools may look very different on the surface, they each solve a specific layer of the same problem: &lt;strong&gt;turning data and models into usable products&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;This post is a &lt;strong&gt;conceptual recap&lt;/strong&gt; for readers who want a clear mental model of where these tools fit—and when to use which.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;1. DataFrames: Pandas and Polars&lt;/h2&gt;
&lt;p&gt;At the core of most Python data workflows is the &lt;strong&gt;DataFrame&lt;/strong&gt;: a tabular, column-oriented data structure.&lt;/p&gt;
&lt;h3&gt;Pandas&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Pandas&lt;/strong&gt; is the de-facto standard for data manipulation in Python.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Flexible and expressive API&lt;/li&gt;
&lt;li&gt;Massive ecosystem and community&lt;/li&gt;
&lt;li&gt;Ideal for analysis, prototyping, and small-to-medium datasets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Common use cases:
- Data cleaning
- Exploratory analysis
- Feature engineering&lt;/p&gt;
&lt;h3&gt;Polars&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Polars&lt;/strong&gt; is a newer DataFrame library designed for performance.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Written in Rust&lt;/li&gt;
&lt;li&gt;Lazy execution and query optimization&lt;/li&gt;
&lt;li&gt;Excellent performance on large datasets&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Common use cases:
- Large-scale data processing
- Performance-sensitive pipelines
- Production data workloads&lt;/p&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Pandas optimizes for &lt;em&gt;developer velocity&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Polars optimizes for &lt;em&gt;runtime efficiency&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;Many teams prototype in Pandas and migrate to Polars when scale becomes a concern.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;2. Visualization Foundations&lt;/h2&gt;
&lt;p&gt;Visualization libraries translate data into insight—either for humans exploring data or users consuming results.&lt;/p&gt;
&lt;h3&gt;Matplotlib&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Matplotlib&lt;/strong&gt; is the low-level foundation of Python plotting.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Highly customizable&lt;/li&gt;
&lt;li&gt;Static plots&lt;/li&gt;
&lt;li&gt;Verbose but extremely flexible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Often used when:
- You need full control over visuals
- Building figures for papers or reports&lt;/p&gt;
&lt;h3&gt;Bokeh&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Bokeh&lt;/strong&gt; focuses on interactive visualizations.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Browser-based output&lt;/li&gt;
&lt;li&gt;Good for dashboards and live data&lt;/li&gt;
&lt;li&gt;Python-first API with JavaScript under the hood&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Vega-Altair&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Altair&lt;/strong&gt; is a declarative visualization library based on Vega-Lite.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You describe &lt;em&gt;what&lt;/em&gt; you want, not &lt;em&gt;how&lt;/em&gt; to draw it&lt;/li&gt;
&lt;li&gt;Clean, concise syntax&lt;/li&gt;
&lt;li&gt;Built-in statistical defaults&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Matplotlib is about precision.&lt;/li&gt;
&lt;li&gt;Bokeh is about interactivity.&lt;/li&gt;
&lt;li&gt;Altair is about clarity and correctness.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Different audiences benefit from different visualization philosophies.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;3. Interactive Visualization: Plotly&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Plotly&lt;/strong&gt; sits between plotting and application building.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Highly interactive charts&lt;/li&gt;
&lt;li&gt;Browser-native rendering&lt;/li&gt;
&lt;li&gt;Used standalone or inside dashboards&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plotly is the visualization engine behind Dash.&lt;/p&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;p&gt;Plotly is ideal when:
- Users need to explore data themselves
- Hover, zoom, and filters matter
- Visuals are part of the product, not just analysis&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;4. Dashboards and Data Apps&lt;/h2&gt;
&lt;p&gt;These tools turn scripts and notebooks into &lt;strong&gt;interactive applications&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Dash&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Dash&lt;/strong&gt; is a Python framework for analytical web apps.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Built on Plotly + Flask&lt;/li&gt;
&lt;li&gt;Reactive UI model&lt;/li&gt;
&lt;li&gt;Designed for dashboards and internal tools&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Streamlit&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Streamlit&lt;/strong&gt; emphasizes speed and simplicity.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Script-first development&lt;/li&gt;
&lt;li&gt;Automatic UI generation&lt;/li&gt;
&lt;li&gt;Minimal boilerplate&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Great for:
- Prototypes
- Internal demos
- Data-driven apps with simple interaction&lt;/p&gt;
&lt;h3&gt;Gradio&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Gradio&lt;/strong&gt; is designed for ML and AI interfaces.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Rapid UI for models&lt;/li&gt;
&lt;li&gt;Easy sharing and deployment&lt;/li&gt;
&lt;li&gt;Strong fit for demos and experiments&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Chainlit&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Chainlit&lt;/strong&gt; focuses on LLM-powered applications.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Chat-based interfaces&lt;/li&gt;
&lt;li&gt;Tool and agent observability&lt;/li&gt;
&lt;li&gt;Built for conversational AI systems&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Dash → structured, production-style dashboards&lt;/li&gt;
&lt;li&gt;Streamlit → fast iteration and experimentation&lt;/li&gt;
&lt;li&gt;Gradio → model demos and ML workflows&lt;/li&gt;
&lt;li&gt;Chainlit → LLM-first product interfaces&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tool choice reflects how “productized” the experience needs to be.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;5. Web APIs: FastAPI and Flask&lt;/h2&gt;
&lt;p&gt;Most AI systems eventually expose functionality via APIs.&lt;/p&gt;
&lt;h3&gt;Flask&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Flask&lt;/strong&gt; is a minimal, flexible web framework.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Simple mental model&lt;/li&gt;
&lt;li&gt;Huge ecosystem&lt;/li&gt;
&lt;li&gt;Ideal for small services and prototypes&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;FastAPI&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;FastAPI&lt;/strong&gt; is designed for modern APIs.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Type hints and validation&lt;/li&gt;
&lt;li&gt;Automatic OpenAPI docs&lt;/li&gt;
&lt;li&gt;High performance with async support&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Product intuition&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Flask favors flexibility and simplicity.&lt;/li&gt;
&lt;li&gt;FastAPI favors correctness, performance, and maintainability.&lt;/li&gt;
&lt;li&gt;FastAPI shines in ML services where inputs, outputs, and contracts matter.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;How these tools fit together in real systems&lt;/h2&gt;
&lt;p&gt;Most real-world data and AI products combine several of these layers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pandas or Polars process data&lt;/li&gt;
&lt;li&gt;Visualization libraries explore and explain results&lt;/li&gt;
&lt;li&gt;Dash, Streamlit, Gradio, or Chainlit expose user-facing interfaces&lt;/li&gt;
&lt;li&gt;FastAPI or Flask serve models and data as APIs&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No single tool is “best”—they’re optimized for different phases of the product lifecycle.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Final Thoughts&lt;/h2&gt;
&lt;p&gt;This ecosystem forms the practical backbone of Python-based data and AI products. Understanding &lt;strong&gt;what each tool is optimized for&lt;/strong&gt; and where it fits makes it easier to design systems that scale from notebooks to production.&lt;/p&gt;
&lt;p&gt;The tools will evolve. The patterns tend to stay the same.&lt;/p&gt;</content><category term="Data Science"/><category term="Python"/><category term="Data Science"/><category term="Visualization"/><category term="Dashboards"/><category term="APIs"/><category term="AI Products"/><category term="MLOps"/><category term="English"/></entry><entry><title>How could Spotify's Discover Weekly recommendation system work?</title><link href="https://alecor.net/content/2025/01/03/how-could-spotify-discover-weekly-recommendation-system-work.html" rel="alternate"/><published>2025-01-03T00:00:00+00:00</published><updated>2025-01-03T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2025-01-03:/content/2025/01/03/how-could-spotify-discover-weekly-recommendation-system-work.html</id><summary type="html">&lt;p&gt;Thinking and describing how Spotify's Discover Weekly leverages machine learning and statistical models to generate personalized music recommendations.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Spotify's Discover Weekly leverages machine learning and statistical models to generate personalized music recommendations. Here’s an outline of how it works:&lt;/p&gt;
&lt;h2&gt;Key Features and Components:&lt;/h2&gt;
&lt;h3&gt;Collaborative Filtering&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Based on your listening habits and those of users with similar tastes.&lt;/li&gt;
&lt;li&gt;Identifies patterns such as songs, artists, and genres frequently liked by similar users.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Natural Language Processing (NLP)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Analyzes text data like song metadata, blogs, and reviews to understand the context and associations between songs and artists.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Audio Analysis&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Uses Spotify’s Echonest API to extract audio features (e.g., tempo, key, mode, loudness, danceability).&lt;/li&gt;
&lt;li&gt;Clusters songs with similar characteristics.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;User Behavioral Data&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Tracks your skips, saves, replays, and time spent on a track.&lt;/li&gt;
&lt;li&gt;Incorporates this data to refine the algorithm dynamically.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Seed Songs and Artists:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Considers tracks and artists you frequently play or like as "seeds."&lt;/li&gt;
&lt;li&gt;Expands recommendations to tracks connected to these seeds.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Collaborative Playlist Contributions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Analyzes public playlists where tracks are grouped together by users.&lt;/li&gt;
&lt;li&gt;Infers relationships between songs commonly appearing together.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Filter Mechanisms&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Avoids recommending songs you’ve already heard, liked, or added to playlists.&lt;/li&gt;
&lt;li&gt;Prioritizes diversity while ensuring recommendations remain relevant.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Deep Learning Models&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Embeds users and songs into a high-dimensional space.&lt;/li&gt;
&lt;li&gt;Calculates proximity to suggest songs closer to your preferences in this space.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Temporal Trends&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Considers your recent listening habits to reflect changes in taste or mood.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Spotify probably combines some or all these techniques to tailor a weekly playlist for each individual user, aiming to introduce new tracks and artists while aligning with your established preferences. The recommendations evolve as your listening history grows.&lt;/p&gt;</content><category term="Data Science"/><category term="AI"/><category term="ML"/><category term="Recommendation Systems"/><category term="English"/></entry><entry><title>How to accumulate wealth</title><link href="https://alecor.net/content/2024/11/29/how-to-accumulate-wealth.html" rel="alternate"/><published>2024-11-29T00:00:00+00:00</published><updated>2024-11-29T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2024-11-29:/content/2024/11/29/how-to-accumulate-wealth.html</id><summary type="html">&lt;p&gt;A very concise description of habits and principles to help you achieve wealth over time.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Creating and accumulating wealth over time involves a combination of strategies, habits, and principles. Here are some key takeaways to help achieve this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Start Early&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compounding: The earlier you start investing, the more you benefit from the power of compound interest.&lt;/li&gt;
&lt;li&gt;Time Horizon: Longer time horizons reduce risk and increase potential returns.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Save and Invest Regularly&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pay Yourself First: Allocate a portion of your income to savings and investments before spending on anything else.&lt;/li&gt;
&lt;li&gt;Dollar-Cost Averaging: Invest a fixed amount regularly to smooth out market volatility.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Diversify Investments&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Asset Allocation: Spread investments across different asset classes (stocks, bonds, real estate, etc.) to manage risk.&lt;/li&gt;
&lt;li&gt;Geographic Diversification: Invest in global markets to mitigate country-specific risks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Manage Debt Wisely&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Good vs. Bad Debt: Use debt strategically, such as taking a mortgage for a home, and avoid high-interest debt like credit cards.&lt;/li&gt;
&lt;li&gt;Debt Repayment Plan: Prioritize paying off high-interest debt to reduce financial burden.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Invest in Education and Skills&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Human Capital: Higher education and skill development can lead to better job opportunities and higher income.&lt;/li&gt;
&lt;li&gt;Lifelong Learning: Continuously upgrade skills to remain competitive in the job market.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Live Below Your Means&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Budgeting: Track income and expenses to ensure you spend less than you earn.&lt;/li&gt;
&lt;li&gt;Frugality: Avoid lifestyle inflation by keeping expenses low as income grows.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Have an Emergency Fund&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Safety Net: Maintain 3-6 months' worth of living expenses in a liquid and accessible account to cover unforeseen expenses.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Invest in Appreciating Assets&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Real Estate: Property typically appreciates over time and can provide rental income.&lt;/li&gt;
&lt;li&gt;Stocks: Historically, stocks have outperformed other asset classes in the long run.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tax Efficiency&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Tax-Advantaged Accounts: Use retirement accounts to defer or avoid taxes on investment gains.&lt;/li&gt;
&lt;li&gt;Tax Planning: Understand tax implications of investments to maximize after-tax returns.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Regularly Review and Rebalance Portfolio&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Assessment: Periodically review investments to ensure they align with your financial goals and risk tolerance.&lt;/li&gt;
&lt;li&gt;Rebalancing: Adjust your portfolio to maintain desired asset allocation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stay Informed and Adapt&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Market Trends: Keep abreast of market trends, economic indicators, and investment opportunities.&lt;/li&gt;
&lt;li&gt;Flexibility: Be willing to adjust strategies based on changing circumstances and goals.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Seek Professional Advice When Needed&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Financial Advisors: Consider consulting a financial advisor for personalized advice and to create a comprehensive financial plan.&lt;/li&gt;
&lt;li&gt;Due Diligence: Research and select advisors with good credentials and a fiduciary duty to act in your best interest.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Avoid Emotional Decisions&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discipline: Stick to your investment plan and avoid making impulsive decisions based on market fluctuations.&lt;/li&gt;
&lt;li&gt;Long-Term Perspective: Focus on long-term goals rather than short-term market movements.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</content><category term="Personal Finance"/><category term="wealth"/><category term="investing"/><category term="personal finance"/><category term="English"/></entry><entry><title>Understanding ML Metrics: Recall, Precision, and F1 Score</title><link href="https://alecor.net/content/2024/10/31/understanding-ml-metrics-recall-precision-and-f1-score.html" rel="alternate"/><published>2024-10-31T00:00:00+00:00</published><updated>2024-10-31T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2024-10-31:/content/2024/10/31/understanding-ml-metrics-recall-precision-and-f1-score.html</id><summary type="html">&lt;p&gt;This article uses a fruit basket analogy to explain key concepts in machine learning evaluation metrics, including recall, precision, and F1 score, making it easier to understand how these metrics relate to identifying true positives, false positives, and false negatives.&lt;/p&gt;</summary><content type="html">&lt;h3&gt;Analogy: A Fruit Basket&lt;/h3&gt;
&lt;p&gt;Imagine you have a basket of fruits, and you want to identify all the apples in it.&lt;/p&gt;
&lt;p&gt;True Positives (TP): These are the apples you correctly identify as apples.
False Positives (FP): These are the fruits you mistakenly identify as apples, but they are actually not apples (e.g., oranges or bananas).
False Negatives (FN): These are the apples you fail to identify; you think they are not apples when they actually are.&lt;/p&gt;
&lt;h3&gt;Definitions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Recall&lt;/strong&gt;: This tells you how good you are at finding all the apples in the basket. It’s the ratio of correctly identified apples (TP) to the total number of actual apples (TP + FN).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Formula&lt;/strong&gt;: Recall = TP / (TP + FN)
Remember: "Recall" is about "recalling" all the true apples.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Precision&lt;/strong&gt;: This tells you how many of the fruits you identified as apples are actually apples. It’s the ratio of correctly identified apples (TP) to the total number of fruits you labeled as apples (TP + FP).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Formula&lt;/strong&gt;: Precision = TP / (TP + FP)
Remember: "Precision" is about being precise in your identification of apples.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;False Positives (FP)&lt;/strong&gt;: This is the number of fruits you incorrectly labeled as apples.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Remember: "False" means you got it wrong, and "Positive" means you said it was an apple.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;False Negatives (FN)&lt;/strong&gt;: This is the number of apples you missed and labeled as something else.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Remember: "False" means you got it wrong, and "Negative" means you said it was not an apple.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;F1 Score&lt;/strong&gt;: This is a way to combine both precision and recall into a single score. It helps you understand the balance between finding apples (recall) and not mislabeling other fruits as apples (precision).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Formula&lt;/strong&gt;: F1 Score = 2 * (Precision * Recall) / (Precision + Recall)
Remember: Think of the F1 Score as a "balance" between how well you find apples and how well you avoid mistakes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Summary&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Recall&lt;/strong&gt;: How many apples you found (TP) out of all the apples that were there (TP + FN).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;False Positives&lt;/strong&gt;: How many fruits you wrongly said were apples.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;False Negatives&lt;/strong&gt;: How many apples you missed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;F1 Score&lt;/strong&gt;: A balance between finding apples and not making mistakes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using this fruit basket analogy can help you visualize and remember these concepts more easily.&lt;/p&gt;</content><category term="Data Science"/><category term="Machine Learning"/><category term="data science"/><category term="AI"/><category term="ML"/><category term="English"/></entry><entry><title>The Current Landscape and Emerging Trends in AI Agents</title><link href="https://alecor.net/content/2024/10/30/the-current-landscape-and-emerging-trends-in-ai-agents.html" rel="alternate"/><published>2024-10-30T00:00:00+00:00</published><updated>2024-10-30T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2024-10-30:/content/2024/10/30/the-current-landscape-and-emerging-trends-in-ai-agents.html</id><summary type="html"/><content type="html">&lt;p&gt;This write-up aims to show the current landscape and emerging trends related to AI agents at the time of this writing. As advancements continue, it will be critical to monitor their development closely.&lt;/p&gt;
&lt;h2&gt;1. AI Agents Definition and Evolution&lt;/h2&gt;
&lt;p&gt;AI agents are defined as autonomous systems capable of perceiving their environment and taking actions to achieve specific goals. These agents have evolved significantly over time, transitioning from simplistic rule-based architectures to sophisticated learning algorithms. The most notable advancements include reinforcement learning and deep learning, which have vastly improved their decision-making processes. By employing these advanced techniques, AI agents can now adapt and respond to complex, dynamic environments, allowing them to solve problems that were previously deemed intractable. As a result, the capabilities of AI agents are being leveraged across a myriad of applications, from self-driving cars to personal virtual assistants.&lt;/p&gt;
&lt;h2&gt;2. Natural Language Processing (NLP)&lt;/h2&gt;
&lt;p&gt;In 2024, significant strides in Natural Language Processing (NLP) have greatly enhanced AI agents' ability to understand and generate human-like language. These advancements have enabled more sophisticated virtual assistants and chatbots that can engage in complex conversations, reflecting a nuanced understanding of context and intent. This progress stems from the integration of advanced techniques such as deep learning and transformer models, which allow agents to learn from vast datasets and improve their conversational capabilities. As a result, users are now experiencing more seamless interactions with AI, fostering better communication and productivity across varied platforms, from customer service to personal assistance.&lt;/p&gt;
&lt;h2&gt;3. Multi-Agent Systems&lt;/h2&gt;
&lt;p&gt;Research into multi-agent systems has gained considerable momentum, focusing on how various AI agents can collaborate to address complicated problems. These systems facilitate coordination between agents, allowing for the optimization of outcomes in sectors such as logistics, supply chain management, and advanced robotics. By leveraging strategies for communication and cooperation, multi-agent systems can collectively tackle challenges more effectively than isolated agents. This collaborative approach not only enhances operational efficiency but also stimulates innovation in problem-solving methodologies, paving the way for applications that require dynamic and adaptive decision-making processes.&lt;/p&gt;
&lt;h2&gt;4. Ethics and Compliance&lt;/h2&gt;
&lt;p&gt;The rising prevalence of AI agents has given rise to important ethical considerations. Organizations are actively developing frameworks to ensure that AI agents operate within established ethical guidelines, adhere to privacy laws, and maintain accountability, especially in sensitive domains such as healthcare and finance. The deployment of AI agents raises critical questions about bias, transparency, and the potential for abuse. In response, regulatory bodies and organizations are investing in establishing standards and best practices that prioritize ethical practices in the design and utilization of these agents, aiming to build public trust and mitigate risks associated with AI technologies.&lt;/p&gt;
&lt;h2&gt;5. Enhanced Personalization&lt;/h2&gt;
&lt;p&gt;AI agents are increasingly being harnessed to deliver personalized experiences across a range of platforms, including e-commerce, education, and entertainment. By analyzing individual user behavior and preferences, these agents can craft tailored recommendations and content that meet specific user needs. Enhanced personalization is achieved through the application of machine learning algorithms that process user data and adapt over time, leading to improved engagement and customer satisfaction. As businesses seek to differentiate themselves in competitive markets, the role of AI agents in facilitating personalized interactions is becoming more critical.&lt;/p&gt;
&lt;h2&gt;6. Autonomous Decision-Making&lt;/h2&gt;
&lt;p&gt;With the advancement of AI technologies, agents have shown remarkable improvements in autonomous decision-making. This is particularly evident in critical areas like autonomous vehicles and drones, where safety and efficiency are paramount. Techniques such as deep reinforcement learning allow these agents to learn from their environments and make real-time decisions based on situational awareness. This ability to autonomously gauge circumstances and act appropriately is transforming industries, leading to safer transportation systems and more efficient logistic operations.&lt;/p&gt;
&lt;h2&gt;7. Integration with IoT Devices&lt;/h2&gt;
&lt;p&gt;The integration of AI agents with Internet of Things (IoT) devices is revolutionizing sectors such as smart home technology and industrial applications. AI agents can synthesize data from multiple sources to support predictive maintenance, optimize energy consumption, and enable sophisticated automated control systems. This synergy enhances operational efficiency and allows users to gain insights from their environments, further streamlining processes in various settings. As IoT continues to proliferate, the collaborative potential between AI agents and connected devices will play a crucial role in driving future innovations.&lt;/p&gt;
&lt;h2&gt;8. Emotional Intelligence&lt;/h2&gt;
&lt;p&gt;The development of emotionally intelligent AI agents is gaining attention, aiming to create systems that can recognize and appropriately respond to human emotions. This capability is particularly beneficial in applications related to mental health, customer service, and user experience design. By incorporating emotional intelligence, AI agents can enhance user interactions, fostering positive experiences and building stronger relationships between humans and machines. This trend raises important questions about the ethical implications of emotionally responsive technology and its potential impact on human psychology.&lt;/p&gt;
&lt;h2&gt;9. Regulatory Developments&lt;/h2&gt;
&lt;p&gt;In 2024, regulatory bodies worldwide are actively drafting and implementing legislation aimed at governing the development and deployment of AI agents. These efforts seek to ensure that AI technologies are approached responsibly, balancing innovation with public safety and ethical considerations. Key areas of focus include data security, algorithmic transparency, and accountability mechanisms to address potential biases in AI decision-making processes. As the landscape of AI continues to evolve, ongoing dialogue between governments, industry leaders, and the public will be essential to establishing effective regulations that promote responsible AI usage.&lt;/p&gt;
&lt;h2&gt;10. AI Agents in Creative Fields&lt;/h2&gt;
&lt;p&gt;AI agents are increasingly making strides in creative industries such as music, art, and writing, where they assist in generating content and facilitating collaboration between machines and humans. This emerging trend challenges traditional notions of authorship and creativity, raising questions about the future of creative professions. As AI agents produce music, design artwork, and even author prose, discussions surrounding the value of human creativity versus machine-generated content become ever more pertinent. The exploration of these themes not only pushes the boundaries of creativity but also fosters new collaborative paradigms between humans and technology.&lt;/p&gt;</content><category term="Data Science"/><category term="LLM"/><category term="AI Agents"/><category term="machine learning"/><category term="data science"/><category term="AI"/><category term="Large Language Models"/><category term="English"/></entry><entry><title>Understanding Machine Learning: A Friendly Guide</title><link href="https://alecor.net/content/2024/10/30/understanding-machine-learning-a-friendly-guide.html" rel="alternate"/><published>2024-10-30T00:00:00+00:00</published><updated>2024-10-30T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2024-10-30:/content/2024/10/30/understanding-machine-learning-a-friendly-guide.html</id><summary type="html">&lt;p&gt;If you've ever wondered how your favorite apps seem to know what you like, or how self-driving cars navigate the streets, you're in the right place. In this article, we'll break down the basics of machine learning in a friendly and approachable way, making it easy for anyone to understand.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Welcome to the fascinating world of Machine Learning (ML)! If you've ever wondered how your favorite apps seem to know what you like, or how self-driving cars navigate the streets, you're in the right place. In this article, we’ll break down the basics of machine learning in a friendly and approachable way, making it easy for anyone to understand.&lt;/p&gt;
&lt;h2&gt;What is Machine Learning?&lt;/h2&gt;
&lt;p&gt;At its core, machine learning is a subset of artificial intelligence (AI) that enables computers to learn from data and improve their performance over time without being explicitly programmed. Think of it as teaching a child to recognize different animals. Instead of giving them a list of characteristics, you show them pictures of cats and dogs, and they learn to identify them based on patterns.&lt;/p&gt;
&lt;h3&gt;The Three Types of Machine Learning&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Supervised Learning&lt;/strong&gt;: This is like having a teacher guiding you. In supervised learning, we provide the algorithm with labeled data, meaning that each training example is paired with the correct output. For instance, if we want to teach a model to recognize spam emails, we would provide it with a dataset of emails labeled as "spam" or "not spam." The model learns from this data and can then predict the label for new, unseen emails.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Unsupervised Learning&lt;/strong&gt;: Imagine exploring a new city without a map. In unsupervised learning, the algorithm is given data without any labels and must find patterns or groupings on its own. A common example is clustering, where the algorithm might group customers based on purchasing behavior without knowing beforehand what those groups should be.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Reinforcement Learning&lt;/strong&gt;: This is akin to training a pet. In reinforcement learning, an agent learns to make decisions by taking actions in an environment to maximize some notion of cumulative reward. For example, a robot learning to navigate a maze receives positive feedback for reaching the end and negative feedback for hitting walls.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;How Does Machine Learning Work?&lt;/h2&gt;
&lt;p&gt;Machine learning involves several key steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Collection&lt;/strong&gt;: The first step is gathering data. This could be anything from images, text, or numerical data. The quality and quantity of data are crucial for building an effective model.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Data Preprocessing&lt;/strong&gt;: Raw data often needs to be cleaned and transformed. This might involve removing duplicates, handling missing values, or normalizing data to ensure consistency.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Choosing a Model&lt;/strong&gt;: There are various algorithms to choose from, depending on the problem at hand. Some popular algorithms include decision trees, neural networks, and support vector machines.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Training the Model&lt;/strong&gt;: This is where the magic happens! The chosen model is trained on the prepared dataset, allowing it to learn patterns and relationships within the data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Evaluation&lt;/strong&gt;: After training, the model is tested on a separate dataset to evaluate its performance. Metrics like accuracy, precision, and recall help determine how well the model is doing.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Deployment&lt;/strong&gt;: Once satisfied with the model's performance, it can be deployed in real-world applications, such as recommendation systems, fraud detection, or image recognition.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Real-World Applications of Machine Learning&lt;/h2&gt;
&lt;p&gt;Machine learning is everywhere! Here are some exciting applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Healthcare&lt;/strong&gt;: ML algorithms can analyze medical data to predict diseases, assist in diagnosis, and personalize treatment plans.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finance&lt;/strong&gt;: Banks use machine learning for credit scoring, fraud detection, and algorithmic trading.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Retail&lt;/strong&gt;: E-commerce platforms leverage ML for personalized recommendations, inventory management, and customer segmentation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transportation&lt;/strong&gt;: Self-driving cars utilize machine learning to interpret sensor data and make driving decisions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Future of Machine Learning&lt;/h2&gt;
&lt;p&gt;As technology continues to evolve, the potential for machine learning is limitless. With advancements in deep learning, natural language processing, and computer vision, we can expect even more innovative applications that will transform industries and improve our daily lives.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Machine learning is an exciting field that combines data, algorithms, and creativity to solve complex problems. Whether you're a tech enthusiast or just curious about how things work, understanding the basics of machine learning can open up a world of possibilities. So, the next time you receive a personalized recommendation or see a self-driving car, you'll know there's a lot of intelligent learning happening behind the scenes.&lt;/p&gt;</content><category term="Data Science"/><category term="Machine Learning"/><category term="data science"/><category term="AI"/><category term="ML"/><category term="English"/></entry><entry><title>Algorithmic Techniques to remember</title><link href="https://alecor.net/content/2023/04/04/algorithmic-techniques-to-remember.html" rel="alternate"/><published>2023-04-04T00:00:00+01:00</published><updated>2023-04-04T00:00:00+01:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-04-04:/content/2023/04/04/algorithmic-techniques-to-remember.html</id><summary type="html">&lt;p&gt;Concise list of algorithmic techniques worth remembering.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Algorithmic tips and concepts that can be useful when solving coding problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Understand&lt;/strong&gt; the problem: Make sure you understand the problem before you start coding. Ask questions if necessary.&lt;/li&gt;
&lt;li&gt;Identify the &lt;strong&gt;input&lt;/strong&gt; and &lt;strong&gt;output&lt;/strong&gt;: Figure out what the input to your program is and what the output should be.&lt;/li&gt;
&lt;li&gt;Use a &lt;strong&gt;brute-force&lt;/strong&gt; approach first: If you're not sure where to start, try a brute-force approach. This means trying all possible solutions until you find the right one.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Break the problem down&lt;/strong&gt;: Divide the problem into smaller sub-problems that are easier to solve.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;data structures&lt;/strong&gt;: Use data structures like arrays, linked lists, and hash tables to organize your data.&lt;/li&gt;
&lt;li&gt;Optimize for &lt;strong&gt;time&lt;/strong&gt; or &lt;strong&gt;space&lt;/strong&gt;: Depending on the problem, you may need to optimize for either time or space complexity.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;recursion&lt;/strong&gt;: Recursion can be a powerful tool for solving problems, especially when dealing with nested data structures.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;dynamic programming&lt;/strong&gt;: Dynamic programming can be used to solve problems where the solution depends on the solutions to smaller sub-problems.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;memoization&lt;/strong&gt;: Memoization can be used to speed up recursive algorithms by caching the results of sub-problems.&lt;/li&gt;
&lt;li&gt;Use binary search: Binary search is a fast and efficient algorithm for finding an element in a sorted array.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;two pointers&lt;/strong&gt;: Two pointers can be used to solve problems that involve searching for a pair of elements in an array.&lt;/li&gt;
&lt;li&gt;Use a &lt;strong&gt;sliding window&lt;/strong&gt;: A sliding window can be used to solve problems that involve finding a subarray that meets a certain condition.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;backtracking&lt;/strong&gt;: Backtracking can be used to solve problems where you need to explore all possible solutions.&lt;/li&gt;
&lt;li&gt;Use a priority queue: A priority queue can be used to implement algorithms that require finding the minimum or maximum element in a set of data.&lt;/li&gt;
&lt;li&gt;Use a &lt;strong&gt;stack or queue&lt;/strong&gt;: A stack or queue can be used to implement algorithms that involve processing data in a specific order.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;bit manipulation&lt;/strong&gt;: Bit manipulation can be used to perform operations on binary representations of data.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;graph algorithms&lt;/strong&gt;: Graph algorithms can be used to solve problems that involve finding the shortest path between two points, or finding connected components in a graph.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;string algorithms&lt;/strong&gt;: String algorithms can be used to solve problems that involve searching, matching, or manipulating strings.&lt;/li&gt;
&lt;li&gt;Use machine learning: Machine learning can be used to solve problems that involve pattern recognition, classification, or prediction.&lt;/li&gt;
&lt;li&gt;Use &lt;strong&gt;parallelization&lt;/strong&gt;: Parallelization can be used to speed up algorithms by distributing the workload across multiple processors or machines.&lt;/li&gt;
&lt;/ul&gt;</content><category term="Interviewing"/><category term="interview"/><category term="interviewing"/><category term="tech"/><category term="English"/></entry><entry><title>Neural Networks and Deep Learning - A high level overview</title><link href="https://alecor.net/content/2023/04/04/neural-networks-and-deep-learning-a-high-level-overview.html" rel="alternate"/><published>2023-04-04T00:00:00+01:00</published><updated>2023-04-04T00:00:00+01:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-04-04:/content/2023/04/04/neural-networks-and-deep-learning-a-high-level-overview.html</id><summary type="html">&lt;p&gt;An overview of neural networks and deep learning - introductory quick read-up, including their use cases, and pros and cons for each technique.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Neural Networks and Deep Learning have seen tremendous advancements in the past decade, leading to their widespread adoption. The following is a summary of some of the commonly used models and their corresponding applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Convolutional Neural Networks (CNNs): CNNs are used for image classification, object detection, and segmentation tasks. They work by applying a series of convolutional filters on the input image to extract features and then applying pooling operations to reduce the spatial dimensions. Some real-world applications of CNNs include self-driving cars, medical image analysis, and face recognition systems.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Recurrent Neural Networks (RNNs): RNNs are used for sequence prediction and processing tasks, such as speech recognition, natural language processing, and stock price prediction. They work by using a feedback loop that allows information to persist over time. Some real-world applications of RNNs include language translation, speech-to-text, and chatbots.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Long Short-Term Memory (LSTM) Networks: LSTMs are a type of RNN that are used to model sequence data with long-term dependencies. They are used for tasks such as time-series forecasting, speech recognition, and natural language processing. Some real-world applications of LSTMs include predicting stock prices, predicting weather patterns, and predicting energy consumption.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Generative Adversarial Networks (GANs): GANs are used for generating synthetic data that is similar to the real data. They consist of two neural networks - a generator and a discriminator - that are trained together in a game-like fashion. Some real-world applications of GANs include generating realistic images, generating synthetic data for training machine learning models, and generating text.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Autoencoders: Autoencoders are used for feature extraction, dimensionality reduction, and data compression. They consist of an encoder that maps the input data to a compressed representation and a decoder that reconstructs the original data from the compressed representation. Some real-world applications of autoencoders include image and video compression, anomaly detection, and recommendation systems.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition, to put a simple pros/cons information, we can add the following:&lt;/p&gt;
&lt;h3&gt;Convolutional Neural Networks (CNNs)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Pros:&lt;ul&gt;
&lt;li&gt;Effective for image and video processing tasks, due to their ability to extract spatial features.&lt;/li&gt;
&lt;li&gt;Parameter sharing and sparsity of connections allow for efficient processing of large data sets.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons:&lt;ul&gt;
&lt;li&gt;Limited to fixed-size inputs and outputs, which may be problematic for some applications.&lt;/li&gt;
&lt;li&gt;May require large amounts of training data to learn the necessary features.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Applications:&lt;ul&gt;
&lt;li&gt;Image and video processing tasks, such as object detection, recognition, and segmentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Recurrent Neural Networks (RNNs):&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Pros:&lt;ul&gt;
&lt;li&gt;Effective for sequence processing tasks, due to their ability to process inputs of varying lengths.&lt;/li&gt;
&lt;li&gt;Can capture temporal dependencies between inputs.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons:&lt;ul&gt;
&lt;li&gt;Can be computationally expensive and difficult to train, especially for long sequences.&lt;/li&gt;
&lt;li&gt;Can suffer from the vanishing gradient problem, which can make it difficult to learn long-term dependencies.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Applications:&lt;ul&gt;
&lt;li&gt;Natural language processing tasks, such as language translation, text generation, and sentiment analysis.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Long Short-Term Memory Networks (LSTMs):&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Pros:&lt;ul&gt;
&lt;li&gt;Effective for sequence processing tasks, due to their ability to capture long-term dependencies and avoid the vanishing gradient problem.&lt;/li&gt;
&lt;li&gt;Can handle inputs of varying lengths.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons:&lt;ul&gt;
&lt;li&gt;Can be computationally expensive and difficult to train, especially for large networks.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Applications:&lt;ul&gt;
&lt;li&gt;Natural language processing tasks, such as language translation, text generation, and sentiment analysis.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Generative Adversarial Networks (GANs):&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Pros:&lt;ul&gt;
&lt;li&gt;Can generate realistic data samples, such as images, by learning the underlying distribution of the data.&lt;/li&gt;
&lt;li&gt;Can be used for data augmentation and generating synthetic training data.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Cons:&lt;ul&gt;
&lt;li&gt;Can be difficult to train and prone to instability, especially for complex data distributions.&lt;/li&gt;
&lt;li&gt;Lack of explicit likelihood function can make it difficult to evaluate the quality of the generated samples.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Applications:&lt;ul&gt;
&lt;li&gt;Image and video generation tasks, such as image-to-image translation, video prediction, and data augmentation.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are just a few examples of the many neural network and deep learning models that are used today. As research in this field continues to advance, we can expect to see even more sophisticated models and applications in the future.&lt;/p&gt;</content><category term="Data Science"/><category term="machine learning"/><category term="data science"/><category term="English"/></entry><entry><title>Pasos de salsa cubana</title><link href="https://alecor.net/pasos-de-salsa-cubana-es.html" rel="alternate"/><published>2023-04-04T00:00:00+01:00</published><updated>2023-04-04T00:00:00+01:00</updated><author><name>djalecor</name></author><id>tag:alecor.net,2023-04-04:/pasos-de-salsa-cubana-es.html</id><summary type="html">&lt;p&gt;Lista de pasos de salsa cubana.&lt;/p&gt;</summary><content type="html">&lt;ul&gt;
&lt;li&gt;Dile que no&lt;/li&gt;
&lt;li&gt;70&lt;/li&gt;
&lt;li&gt;71&lt;/li&gt;
&lt;li&gt;72&lt;/li&gt;
&lt;/ul&gt;</content><category term="Dancing"/><category term="dancing"/><category term="salsa"/><category term="rueda"/><category term="baile"/><category term="salsa cubana"/><category term="Español"/></entry><entry><title>Public Github repos</title><link href="https://alecor.net/content/2023/04/04/public-github-repos.html" rel="alternate"/><published>2023-04-04T00:00:00+01:00</published><updated>2023-04-04T00:00:00+01:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-04-04:/content/2023/04/04/public-github-repos.html</id><summary type="html">&lt;p&gt;Github public repos list and resources.&lt;/p&gt;</summary><content type="html">&lt;p&gt;You can find the latest repos and their source code in &lt;a href="https://github.com/alecordev?tab=repositories"&gt;https://github.com/alecordev?tab=repositories&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;airflowing &lt;a href="https://github.com/alecordev/airflowing"&gt;https://github.com/alecordev/airflowing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;alecordev.github.io &lt;a href="https://github.com/alecordev/alecordev.github.io"&gt;https://github.com/alecordev/alecordev.github.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;aptus &lt;a href="https://github.com/alecordev/aptus"&gt;https://github.com/alecordev/aptus&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;argparse-templates &lt;a href="https://github.com/alecordev/argparse-templates"&gt;https://github.com/alecordev/argparse-templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;async-utils &lt;a href="https://github.com/alecordev/async-utils"&gt;https://github.com/alecordev/async-utils&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;cheatsheets &lt;a href="https://github.com/alecordev/cheatsheets"&gt;https://github.com/alecordev/cheatsheets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;cli-tools &lt;a href="https://github.com/alecordev/cli-tools"&gt;https://github.com/alecordev/cli-tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;clipboard-listener &lt;a href="https://github.com/alecordev/clipboard-listener"&gt;https://github.com/alecordev/clipboard-listener&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;commands-runner &lt;a href="https://github.com/alecordev/commands-runner"&gt;https://github.com/alecordev/commands-runner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;configuration-samples &lt;a href="https://github.com/alecordev/configuration-samples"&gt;https://github.com/alecordev/configuration-samples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;containerising &lt;a href="https://github.com/alecordev/containerising"&gt;https://github.com/alecordev/containerising&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;dashing &lt;a href="https://github.com/alecordev/dashing"&gt;https://github.com/alecordev/dashing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;data-generators &lt;a href="https://github.com/alecordev/data-generators"&gt;https://github.com/alecordev/data-generators&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;data-science &lt;a href="https://github.com/alecordev/data-science"&gt;https://github.com/alecordev/data-science&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;directory-listener &lt;a href="https://github.com/alecordev/directory-listener"&gt;https://github.com/alecordev/directory-listener&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Django-Kubernetes &lt;a href="https://github.com/alecordev/Django-Kubernetes"&gt;https://github.com/alecordev/Django-Kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;dockerized-jupyterlab &lt;a href="https://github.com/alecordev/dockerized-jupyterlab"&gt;https://github.com/alecordev/dockerized-jupyterlab&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;dokuwiki-compendium &lt;a href="https://github.com/alecordev/dokuwiki-compendium"&gt;https://github.com/alecordev/dokuwiki-compendium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;downloaders &lt;a href="https://github.com/alecordev/downloaders"&gt;https://github.com/alecordev/downloaders&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;example-projects &lt;a href="https://github.com/alecordev/example-projects"&gt;https://github.com/alecordev/example-projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;fastapi-template &lt;a href="https://github.com/alecordev/fastapi-template"&gt;https://github.com/alecordev/fastapi-template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;finan &lt;a href="https://github.com/alecordev/finan"&gt;https://github.com/alecordev/finan&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;finance-snippets &lt;a href="https://github.com/alecordev/finance-snippets"&gt;https://github.com/alecordev/finance-snippets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;flask-app-template &lt;a href="https://github.com/alecordev/flask-app-template"&gt;https://github.com/alecordev/flask-app-template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;flask-celery-example &lt;a href="https://github.com/alecordev/flask-celery-example"&gt;https://github.com/alecordev/flask-celery-example&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;flasking &lt;a href="https://github.com/alecordev/flasking"&gt;https://github.com/alecordev/flasking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;genetic-algorithms &lt;a href="https://github.com/alecordev/genetic-algorithms"&gt;https://github.com/alecordev/genetic-algorithms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;graphvizing &lt;a href="https://github.com/alecordev/graphvizing"&gt;https://github.com/alecordev/graphvizing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;headliner &lt;a href="https://github.com/alecordev/headliner"&gt;https://github.com/alecordev/headliner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;image-processing &lt;a href="https://github.com/alecordev/image-processing"&gt;https://github.com/alecordev/image-processing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="Portfolio"/><category term="github"/><category term="repos"/><category term="portfolio"/><category term="projects"/><category term="English"/></entry><entry><title>Useful free software</title><link href="https://alecor.net/content/2023/04/04/useful-free-software.html" rel="alternate"/><published>2023-04-04T00:00:00+01:00</published><updated>2023-04-04T00:00:00+01:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-04-04:/content/2023/04/04/useful-free-software.html</id><summary type="html">&lt;p&gt;Useful free software - tools and utilities to have handy.&lt;/p&gt;</summary><content type="html">&lt;ul&gt;
&lt;li&gt;IrfanView&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.irfanview.com/64bit.htm"&gt;https://www.irfanview.com/64bit.htm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Autodesk Sketchbook&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.autodesk.com/products/sketchbook/free-download.karikat"&gt;https://www.autodesk.com/products/sketchbook/free-download.karikat&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;AndreaMosaic&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.andreaplanet.com/andreamosaic/download/"&gt;http://www.andreaplanet.com/andreamosaic/download/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;AstroGrep&lt;ul&gt;
&lt;li&gt;&lt;a href="https://astrogrep.sourceforge.net/download/"&gt;https://astrogrep.sourceforge.net/download/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><category term="Software"/><category term="free software"/><category term="software"/><category term="selection"/><category term="free"/><category term="English"/></entry><entry><title>scikit-learn models ideal use cases</title><link href="https://alecor.net/content/2023/03/24/scikit-learn-models-ideal-use-cases.html" rel="alternate"/><published>2023-03-24T00:00:00+00:00</published><updated>2023-03-24T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-03-24:/content/2023/03/24/scikit-learn-models-ideal-use-cases.html</id><summary type="html">&lt;p&gt;Summary of the ideal use cases for models implemented in the scikit-learn Python library for machine learning.&lt;/p&gt;</summary><content type="html">&lt;p&gt;A quick summary of the most common scikit-learn models and their ideal use cases:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Linear Regression&lt;/strong&gt;: used for regression tasks where there is a linear relationship between the features and target variable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Logistic Regression&lt;/strong&gt;: used for binary classification tasks. Logistic regression can also be used for multi-class classification. One common way to use logistic regression for multi-class classification is to train multiple binary logistic regression classifiers, each of which predicts the probability of one class versus all other classes. This is known as the One-vs-Rest (OvR) or One-vs-All (OvA) approach. Another approach is to use the multinomial logistic regression, also known as softmax regression, which directly predicts the probabilities of each class. Both approaches can be implemented in scikit-learn's LogisticRegression model by setting the multi_class parameter to either "ovr" or "multinomial", respectively.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Decision Tree&lt;/strong&gt;: used for both classification and regression tasks, especially when the data has a nonlinear relationship between the features and target variable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Random Forest&lt;/strong&gt;: used for both classification and regression tasks, especially when the data has complex relationships between the features and target variable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support Vector Machine&lt;/strong&gt;: used for both classification and regression tasks, especially when there is a clear separation between classes or a nonlinear relationship between the features and target variable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Naive Bayes&lt;/strong&gt;: used for classification tasks, especially when the data has a large number of features and a relatively small amount of training data.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;K-Nearest Neighbors&lt;/strong&gt;: used for both classification and regression tasks, especially when there is no clear separation between classes or a nonlinear relationship between the features and target variable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Gradient Boosting&lt;/strong&gt;: used for both classification and regression tasks, especially when there are many weak learners (e.g. decision trees) that need to be combined to form a strong learner.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Neural Networks&lt;/strong&gt;: used for both classification and regression tasks, especially when there are complex relationships between the features and target variable.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Examples of real-world applications for the ML algorithms mentioned above:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linear Regression: Predicting housing prices, stock prices, and sales forecasting.&lt;/li&gt;
&lt;li&gt;Logistic Regression: Predicting whether a customer will churn, determining the likelihood of a customer responding to a marketing campaign, fraud detection, and sentiment analysis.&lt;/li&gt;
&lt;li&gt;Decision Trees: Credit risk analysis, loan eligibility, determining whether a customer will default on a loan, and product recommendation systems.&lt;/li&gt;
&lt;li&gt;Random Forest: Predicting customer churn, credit scoring, and predicting customer lifetime value.&lt;/li&gt;
&lt;li&gt;Support Vector Machines (SVM): Image classification, detecting spam emails, and predicting stock prices.&lt;/li&gt;
&lt;li&gt;Naive Bayes: Spam filtering, sentiment analysis, and text classification.&lt;/li&gt;
&lt;li&gt;k-Nearest Neighbors (KNN): Recommender systems, predicting customer behavior, and image recognition.&lt;/li&gt;
&lt;li&gt;Gradient Boosting: Fraud detection, predicting customer churn, and text classification.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These examples are non-exhaustive, and the use cases for each model can also vary depending on the problem and data being used. There may be situations where one model performs better than another even if it's not listed as the ideal use case for it.&lt;/p&gt;</content><category term="Data Science"/><category term="machine learning"/><category term="data science"/><category term="python"/><category term="scikit-learn"/><category term="models"/><category term="English"/></entry><entry><title>10 time management tips from Seneca</title><link href="https://alecor.net/content/2023/03/15/10-time-management-tips-from-seneca.html" rel="alternate"/><published>2023-03-15T00:00:00+00:00</published><updated>2023-03-15T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-03-15:/content/2023/03/15/10-time-management-tips-from-seneca.html</id><summary type="html">&lt;p&gt;10 points on time management from Seneca.&lt;/p&gt;</summary><content type="html">&lt;ol&gt;
&lt;li&gt;Treat time as a commodity&lt;/li&gt;
&lt;li&gt;Don’t invest your time preparing for life&lt;/li&gt;
&lt;li&gt;Live life for your own self &lt;/li&gt;
&lt;li&gt;Practice Premeditatio Malorum&lt;/li&gt;
&lt;li&gt;Make long term rewards immediate&lt;/li&gt;
&lt;li&gt;Make the most of your free time&lt;/li&gt;
&lt;li&gt;Spend time reflecting on your past &lt;/li&gt;
&lt;li&gt;Stop wasting time in life’s trivialities&lt;/li&gt;
&lt;li&gt;Invest your time creating new memories&lt;/li&gt;
&lt;li&gt;Invest your time in philosophies&lt;/li&gt;
&lt;/ol&gt;</content><category term="Insightful"/><category term="insightful"/><category term="philosophy"/><category term="stoicism"/><category term="English"/></entry><entry><title>6 shortcuts that guide human behaviour</title><link href="https://alecor.net/content/2023/03/15/6-shortcuts-that-guide-human-behaviour.html" rel="alternate"/><published>2023-03-15T00:00:00+00:00</published><updated>2023-03-15T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-03-15:/content/2023/03/15/6-shortcuts-that-guide-human-behaviour.html</id><summary type="html">&lt;p&gt;Proven by social psychology, studies have shown that these guide our behaviour.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;The 6 shortcuts that guide human behaviour&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Reciprocity&lt;/li&gt;
&lt;li&gt;Scarcity&lt;/li&gt;
&lt;li&gt;Authority&lt;/li&gt;
&lt;li&gt;Consistency&lt;/li&gt;
&lt;li&gt;Liking&lt;/li&gt;
&lt;li&gt;Consensus&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Reciprocity&lt;/h3&gt;
&lt;p&gt;An implicit obligation to give when you receive.&lt;/p&gt;
&lt;p&gt;Example:
- A friend or colleague invites you to their party, you feel more compelled to invite them to your party&lt;/p&gt;
&lt;p&gt;People are more likely to say yes to those that they owe.&lt;/p&gt;
&lt;p&gt;The key to successful reciprocity use is that you need to be the first to give, something personalized and unexpected for the other party.&lt;/p&gt;
&lt;h3&gt;Scarcity&lt;/h3&gt;
&lt;p&gt;Simply put, people want &lt;em&gt;more&lt;/em&gt; of those things there are &lt;em&gt;less&lt;/em&gt; of.&lt;/p&gt;
&lt;p&gt;Example:
- When British Airways informed that their NY - London concorde service had become uneconomical and would be shut down, the next day sales increased considerably. People wanted it more, as it had become a more scarce service.&lt;/p&gt;
&lt;p&gt;Today, it is not enough to mention the &lt;strong&gt;benefits&lt;/strong&gt; someone may have, but also what's &lt;strong&gt;unique&lt;/strong&gt; and what they stand to &lt;strong&gt;lose&lt;/strong&gt; if they fail to consider your proposal.&lt;/p&gt;
&lt;h3&gt;Authority&lt;/h3&gt;
&lt;p&gt;This is the idea that people follow credible knowledgeable experts.&lt;/p&gt;
&lt;p&gt;Example:
- Physiotherapists have more success having their patients doing the recommended exercise if their diplomas are visible and patients can see them (like in the walls of their consulting rooms)
- There is more trust in people with uniform
- Sales increased amazingly in a small real state agency, where the secretary first mentioned the credentials and expertise of the agents they were connecting the call to.&lt;/p&gt;
&lt;p&gt;This also tells us that it is relevant to demonstrate this, to signal to others what makes us credible knowledgeable authority before you make your influence attempt.&lt;/p&gt;
&lt;p&gt;Evidently, specially in some professional environments, you can't show off credentials or talk well about yourself, however, someone else certainly can. Research suggests that it doesn't matter who does this.&lt;/p&gt;
&lt;h3&gt;Consistency&lt;/h3&gt;
&lt;p&gt;People like to be consistent with the things that have been said or done.&lt;/p&gt;
&lt;p&gt;To apply this shortcut means look and ask for commitments that can be made. Simply put, start asking for small easier related things to do to support your request.&lt;/p&gt;
&lt;p&gt;When seeking to influence, look for voluntary active public commitment in writing. In this particular case, it was proven that if patients filled their forms for requesting appointments instead of staff, they were more likely to attend and remember this appointment.&lt;/p&gt;
&lt;h3&gt;Liking&lt;/h3&gt;
&lt;p&gt;People prefer to say yes to those that they like.&lt;/p&gt;
&lt;p&gt;Persuation science tells us that there are 3 important factors for someone to like another, we like:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;People that are &lt;em&gt;similar to us&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;People who pay us &lt;em&gt;compliments&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;People who &lt;em&gt;cooperate&lt;/em&gt; with us (usually towards mutual goals)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Exchanging personal information, identify similarities and things you have in common with the other side, small talk, and then getting down to the serious conversation, request or meeting, provides a huge advantage to create and close businesses, agreements and related activities.&lt;/p&gt;
&lt;p&gt;In summary, to make use of this principle of liking, be sure to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Look for similarities you share with others&lt;/li&gt;
&lt;li&gt;Genuine compliments to others&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And do these before getting down to business.&lt;/p&gt;
&lt;h3&gt;Consensus&lt;/h3&gt;
&lt;p&gt;Specially when they are uncertain, people will look to the actions and behaviours of others to determine their own.&lt;/p&gt;
&lt;p&gt;One of the most useful examples of these are the cards used by hotels to request (or persuade) guests to reuse their towels. Most of these cards focus the message on the &lt;em&gt;benefits that reuse can have on environmental protection&lt;/em&gt;, and it turns out this is a pretty effective strategy, leading to around 35% compliance.&lt;/p&gt;
&lt;p&gt;It turns out that around 75% of people checking into a hotel for 4 nights or longer will reuse their towels at some point during their stay.&lt;/p&gt;
&lt;p&gt;What would happen if we were to create a card, using that information, to trigger the principle of consensus in prospective guests?&lt;/p&gt;
&lt;p&gt;This card would read something like "75% of our guests reuse their towels; please do so as well". Turns out that doing this, the research showed that towel reuse rises by 26%.&lt;/p&gt;
&lt;p&gt;Now imagine if next time you check in a hotel you read a card that states "75% of people staying in &lt;em&gt;this&lt;/em&gt; room reuse their towel". You are probably thinking "I hope they are not the &lt;em&gt;same&lt;/em&gt; towels", but also you would initially believe that this message will have no influence on what you may do, but studies have shown that this small change in the message to show what comparable previous guests have done is the single most effective message, leading to 33% increase in towel reuse.&lt;/p&gt;
&lt;p&gt;Here, science is telling us that instead of relying on our own ability to persuade others, we can point to what others are already doing, specially many similar others.&lt;/p&gt;</content><category term="Insightful"/><category term="insightful"/><category term="philosophy"/><category term="social psychology"/><category term="psychology"/><category term="English"/></entry><entry><title>Effective Presentations</title><link href="https://alecor.net/content/2023/03/15/effective-presentations.html" rel="alternate"/><published>2023-03-15T00:00:00+00:00</published><updated>2023-03-15T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-03-15:/content/2023/03/15/effective-presentations.html</id><summary type="html">&lt;p&gt;Sequence of steps to consider for creating an effective persuasive presentation.&lt;/p&gt;</summary><content type="html">&lt;p&gt;This is a sequence of steps you can follow to ensure an effective presentation when presenting an idea:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Start with a clear and concise statement of your idea: Begin your presentation by clearly stating your idea in a way that is easy to understand. This will set the tone for the rest of your presentation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Provide evidence to support your idea: Use facts, statistics, research, or other data to back up your idea. This will help to build credibility and demonstrate that your idea is well thought-out and supported by evidence.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Address potential counterarguments: Anticipate potential objections or counterarguments that someone might raise against your idea and address them proactively. This shows that you have thought through potential challenges and are prepared to respond to them.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use storytelling: Use stories or anecdotes to illustrate your idea and make it more relatable. This can help to engage your audience emotionally and make your idea more memorable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use visuals: Incorporate visuals, such as charts or graphs, to help illustrate your points and make your presentation more engaging. This can help to simplify complex ideas and make them more accessible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Speak clearly and confidently: Deliver your presentation with confidence and conviction. Speak clearly and use body language to emphasize key points.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Conclude with a call to action: End your presentation with a clear call to action, such as asking for feedback or requesting that the audience take a specific action based on your idea.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;By following these steps, you can present your ideas in a way that is persuasive, engaging, and memorable.&lt;/p&gt;</content><category term="Insightful"/><category term="insightful"/><category term="philosophy"/><category term="psychology"/><category term="discussion"/><category term="presenting"/><category term="persuasion"/><category term="English"/></entry><entry><title>Fallacies</title><link href="https://alecor.net/content/2023/03/15/fallacies.html" rel="alternate"/><published>2023-03-15T00:00:00+00:00</published><updated>2023-03-15T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-03-15:/content/2023/03/15/fallacies.html</id><summary type="html">&lt;p&gt;What are fallacies, categories and examples.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Fallacies are mistakes of reasoning, as opposed to making mistakes that are of a factual nature. If I counted twenty people in the room when there were in fact twenty-one, then I made a factual mistake. On the other hand, if I believe that there are round squares, I am believing something that is inconsistent. This is a mistake of reasoning, and a fallacy, since I should not have believed something inconsistent if my reasoning is good.&lt;/p&gt;
&lt;p&gt;In some discussion, a fallacy is taken to be an undesirable kind of argument or inference. For example, a certain textbook explains "fallacy" as "an unreliable inference". In our view, this definition of fallacy is rather narrow, since we might want to count certain mistakes of reasoning as fallacious even though they are not presented as arguments. For example, making a contradictory claim seems to be a case of fallacy, but a single claim is not an argument. Similarly, putting forward a question with an inappropriate presupposition might also be regarded as a fallacy, but a question is also not an argument. In both of these situations though, the person is making a mistake of reasoning since he is doing something that goes against one or more principles of correct reasoning. This is why we would like to define fallacies more broadly as violations of the principles of critical thinking, whether or not the mistakes take the form of an argument.&lt;/p&gt;
&lt;p&gt;The study of fallacies is an application of the principles of critical thinking. Being familiar with typical fallacies can help us avoid them. We would also be in a position to explain other people's mistakes. There are different ways of classifying fallacies. Broadly speaking, we might divide fallacies into four kinds.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fallacies of inconsistency: cases where something inconsistent or self-defeating has been proposed or accepted.&lt;/li&gt;
&lt;li&gt;Fallacies of inappropriate presumption: cases where we have an assumption or a question presupposing something that is not reasonable to accept in the relevant conversational context.&lt;/li&gt;
&lt;li&gt;Fallacies of relevance: cases where irrelevant reasons are being invoked or relevant reasons being ignored.&lt;/li&gt;
&lt;li&gt;Fallacies of insufficiency: cases where the evidence supporting a conclusion is insufficient or weak.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;List of fallacies&lt;/h2&gt;
&lt;h3&gt;ad hominem&lt;/h3&gt;
&lt;p&gt;A theory is discarded not because of any evidence against it or lack of evidence for it, but because of the person who argues for it. Example:
A: The Government should enact minimum-wage legislation so that workers are not exploited.
B: Nonsense. You say that only because you cannot find a good job.
ad ignorantiam (appeal to ignorance)
The truth of a claim is established only on the basis of lack of evidence against it. A simple obvious example of such fallacy is to argue that unicorns exist because there is no evidence against such a claim. At first sight it seems that many theories that we describe as scientific involve such a fallacy. E.g. the first law of thermodynamics holds because so far there has not been any negative instance that would serve as evidence against it. But notice, as in cases like this, there is evidence for the law, namely positive instances. Notice also that this fallacy does not apply to situations where there are only two rival claims and one has already been falsified, then we may justly establish the truth of the other even if we cannot find evidence for or against it.&lt;/p&gt;
&lt;h3&gt;ad misericordiam (appeal to pity)&lt;/h3&gt;
&lt;p&gt;In offering an argument, pity is appealed to. Usually this happens when people argue for special treatment on the basis of their need. E.g. a student argues that the teacher should let him/her pass the examination because he/she needs it in order to graduate. Of course, pity might be a relevant consideration in certain conditions, as in contexts involving charity.&lt;/p&gt;
&lt;h3&gt;ad populum (appeal to popularity)&lt;/h3&gt;
&lt;p&gt;The truth of a claim is established only on the basis of its popularity and familiarity. This is the fallacy committed by many commercials. Surely you have heard of commercials implying that we should buy a certain product because it has made to the top of a sales rank, or because the brand is the city's "favourite".&lt;/p&gt;
&lt;h3&gt;Affirming the consequent&lt;/h3&gt;
&lt;p&gt;Inferring that P is true solely because Q is true and it is also true that if P is true, Q is true.&lt;/p&gt;
&lt;p&gt;The problem with this type of reasoning is that it ignores the possibility that there are other conditions apart from P that might lead to Q. For example, if there is a traffic jam, a colleague may be late for work. But if we argue from his being late to there being a traffic jam, we are guilty of this fallacy - the colleague may be late due to a faulty alarm clock.&lt;/p&gt;
&lt;p&gt;Of course, if we have evidence showing that P is the only or most likely condition that leads to Q, then we can infer that P is likely to be true without committing a fallacy.&lt;/p&gt;
&lt;h3&gt;Begging the question (petito principii)&lt;/h3&gt;
&lt;p&gt;In arguing for a claim, the claim itself is already assumed in the premise. Example: "God exists because this is what the Bible says, and the Bible is reliable because it is the word of God."&lt;/p&gt;
&lt;h3&gt;Complex question or loaded question&lt;/h3&gt;
&lt;p&gt;A question is posed in such a way that a person, no matter what answer he/she gives to the question, will inevitably commit him/herself to some other claim, which should not be presupposed in the context in question.&lt;/p&gt;
&lt;p&gt;A common tactic is to ask a yes-no question that tricks people to agree to something they never intended to say. For example, if you are asked "Are you still as self-centred as you used to be?", then no matter you answer "yes" or "no", you are bound to admit that you were self-centred in the past. Of course, the same question would not count as a fallacy if the presupposition of the question is indeed accepted in the conversational context.&lt;/p&gt;
&lt;h3&gt;Composition (opposite of division)&lt;/h3&gt;
&lt;p&gt;The whole is assumed to have the same properties as its parts. Anne might be humorous and fun-loving and an excellent person to invite to the party. The same might be true of Ben, Chris and David considered individually. But it does not follow that it will be a good idea to invite all of them to the party. Perhaps they hate each other and the party will be ruined.&lt;/p&gt;
&lt;h3&gt;Denying the antecedent&lt;/h3&gt;
&lt;p&gt;Inferring that Q is false just because if P is true, Q is also true, but P is false.&lt;/p&gt;
&lt;p&gt;This fallacy is similar to the fallacy of affirming the consequent. Again the problem is that some alternative explanation or cause might be overlooked. Although P is false, some other condition might be sufficient to make Q true.&lt;/p&gt;
&lt;p&gt;Example: If there is a traffic jam, a colleague may be late for work. But it is not right to argue in the light of a smooth traffic that the colleague will not be late. Again, his alarm clock may have stopped working.&lt;/p&gt;
&lt;h3&gt;Division (opposite of composition)&lt;/h3&gt;
&lt;p&gt;The parts of a whole is assumed to have the same properties of the whole. It is possible that, on a whole, a company is very effective, while some of its departments are not. It would be inappropriate to assume they all are.&lt;/p&gt;
&lt;h3&gt;Equivocation&lt;/h3&gt;
&lt;p&gt;Putting forward an argument where a word changes meaning without having it pointed out. For example, some philosophers argue that all acts are selfish. Even if you strive to serve others, you are still acting selfishly because your act is just to satisfy your desire to serve others. But surely the word "selfish" means differently in the premise and the conclusion - when we say a person is selfish we usually mean that he does not strive to serve others. To say that a person is selfish because he is doing something he wants, even when what he wants is to help others, is to use the term "selfish" with a different meaning.&lt;/p&gt;
&lt;h3&gt;False dilemma&lt;/h3&gt;
&lt;p&gt;Presenting a limited set of alternatives when there are others that are worth considering in the context. Example: "Every person is either my enemy or my friend. If he/she is my enemy I should hate him/her. If he/she is my friend I should love him/her. So I should either love him/her or hate him/her." Obviously, the conclusion is too extreme because most people are neither your enemy nor your friend.&lt;/p&gt;
&lt;h3&gt;Gambler's fallacy&lt;/h3&gt;
&lt;p&gt;Assumption is made to take some independent statistics as dependent. The untrained mind tends to think that, e.g. if a fair coin is tossed five times and the results are all heads, then the next toss will more likely be a tail. It will not be, however. If the coin is fair, the result for each toss is completely independent of the others. Notice the fallacy hinges on the fact that the final result is not known. Had the final result been known already, the statistics would have been dependent.&lt;/p&gt;
&lt;h3&gt;Genetic fallacy&lt;/h3&gt;
&lt;p&gt;Thinking that because X dervies from Y, and Y has a certain property, X must have the same property also. Example: "His father is a criminal, so he must also be up to no good."&lt;/p&gt;
&lt;h3&gt;Non sequitur&lt;/h3&gt;
&lt;p&gt;A conclusion is drawn which does not follow from the premise. This is not a specific fallacy but a very general term for a bad argument. So a lot of the examples above and below can be said to be non sequitur.&lt;/p&gt;
&lt;h3&gt;Petito principii&lt;/h3&gt;
&lt;p&gt;Latin word for question begging.
Post hoc, ergo propter hoc (literally, "after this, therefore because of this")
Inferring that X must be the cause of Y just because X is followed by Y.&lt;/p&gt;
&lt;p&gt;For example, having visited a graveyard, I fell ill and infer that graveyards are spooky places that cause illnesses. Of course, this inference is not warranted since this might just be a coincidence. However, a lot of superstituous beliefs commit this fallacy.&lt;/p&gt;
&lt;h3&gt;Red herring&lt;/h3&gt;
&lt;p&gt;Within an argument some irrelevant issue is raised which diverts attention from the main subject. The function of the red herring is sometimes to help express a strong, biased opinion. The red herring (the irrelevant issue) serves to increase the force of the argument in a very misleading manner.&lt;/p&gt;
&lt;p&gt;For example, in a debate as to whether God exists, someone might argue that believing in God gives peace and meaning to many people's lives. This would be an example of a red herring since whether religions can have a positive effect on people is irrelevant to the question of the existence of God. The good psychological effect of a belief is not a reason for thinking that the belief is true.&lt;/p&gt;
&lt;h3&gt;Slippery slope&lt;/h3&gt;
&lt;p&gt;Arguing that if an opponent were to accept some claim C1, then he or she has to accept some other closely related claim C2, which in turn commits the opponent to a still further claim C3, eventually leading to the conclusion that the opponent is committed to something absurd or obviously unacceptable.&lt;/p&gt;
&lt;p&gt;This style of argumentation constitutes a fallacy only when it is inappropriate to think if one were to accept the initial claim, one must accept all the other claims.&lt;/p&gt;
&lt;p&gt;An example: "The government should not prohibit drugs. Otherwise the government should also ban alcohol or cigarettes. And then fatty food and junk food would have to be regulated too. The next thing you know, the government would force us to brush our teeth and do exercises everyday."&lt;/p&gt;
&lt;h3&gt;Straw man&lt;/h3&gt;
&lt;p&gt;Attacking an opponent by attributing to him/her an implausible position that is easily defeated when this is not actually the opponent's position.&lt;/p&gt;
&lt;p&gt;Example: When many people argue for more democracy in Hong Kong, a typical reply is to say that this is not warranted because it is wrong to think that democracy is the solution to all of Hong Kong's problems, or to say that one should not blindly accept democracy. But those who support democracy never suggest that democracy can solve all problems (e.g. pollution), and they might also agree that blindly accepting something is rarely correct, whether it is democracy or not. Those criticisms attack implausible "strawman" positions and do not address the real arguments for democracy.&lt;/p&gt;</content><category term="Insightful"/><category term="insightful"/><category term="philosophy"/><category term="English"/></entry><entry><title>How to be persuasive</title><link href="https://alecor.net/content/2023/03/15/how-to-be-persuasive.html" rel="alternate"/><published>2023-03-15T00:00:00+00:00</published><updated>2023-03-15T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-03-15:/content/2023/03/15/how-to-be-persuasive.html</id><summary type="html">&lt;p&gt;Concise points to be persuasive.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Some effective ways to be persuasive in a discussion:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Use evidence: When making a point, use evidence to back it up. This could be in the form of statistics, research, or other data. Providing evidence helps to build credibility and strengthens your argument.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Listen actively: Listening actively to the other person's point of view shows that you respect their opinion and can help you to better understand their perspective. This can make it easier to find common ground and build a more convincing argument.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use clear language: Use simple and clear language to express your ideas. Avoid using jargon or complex terms that the other person may not understand.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Stay calm and respectful: Remaining calm and respectful during a discussion helps to maintain a positive and productive tone. Avoid getting defensive or attacking the other person's ideas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Appeal to emotions: Emotions can be a powerful tool in persuasion. If appropriate, use personal stories or anecdotes to appeal to the other person's emotions and help them connect with your point of view.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Find common ground: Finding common ground can help build a sense of mutual understanding and respect. This can make it easier to persuade the other person to see your point of view.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Be willing to compromise: Being willing to compromise shows that you are open to finding a solution that works for everyone. This can make it easier to persuade the other person to see your perspective and reach a mutually beneficial outcome.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, being persuasive in a discussion involves using evidence, listening actively, using clear language, staying calm and respectful, appealing to emotions, finding common ground, and being willing to compromise. By using these strategies effectively, you can increase your chances of successfully persuading others to see your point of view.&lt;/p&gt;</content><category term="Insightful"/><category term="insightful"/><category term="philosophy"/><category term="psychology"/><category term="discussion"/><category term="English"/></entry><entry><title>Take aways from Lao Tzu</title><link href="https://alecor.net/content/2023/03/15/take-aways-from-lao-tzu.html" rel="alternate"/><published>2023-03-15T00:00:00+00:00</published><updated>2023-03-15T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-03-15:/content/2023/03/15/take-aways-from-lao-tzu.html</id><summary type="html">&lt;p&gt;Key points from the teachings of Lao Tzu.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Some take aways from Lao Tzu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Knowing others is intelligence, knowing yourself is true wisdom.&lt;/li&gt;
&lt;li&gt;Mastering others is strength, mastering yourself is true power.&lt;/li&gt;
&lt;li&gt;Kindness in words creates confidence.&lt;/li&gt;
&lt;li&gt;Kindness in thinking creates profoundness.&lt;/li&gt;
&lt;li&gt;Kindness in giving creates love.&lt;/li&gt;
&lt;li&gt;Care about what other people think and you will always be their prisoner.&lt;/li&gt;
&lt;li&gt;The wise man is one who knows what he does not know.&lt;/li&gt;
&lt;li&gt;New beginnings are often disguised as painful endings.&lt;/li&gt;
&lt;li&gt;Learn to follow first, if you ever wish to lead.&lt;/li&gt;
&lt;/ul&gt;</content><category term="Insightful"/><category term="insightful"/><category term="philosophy"/><category term="taoism"/><category term="English"/></entry><entry><title>Canciones de la Hinchada Argentina</title><link href="https://alecor.net/canciones-de-la-hinchada-argentina-es.html" rel="alternate"/><published>2023-02-27T00:00:00+00:00</published><updated>2023-02-27T00:00:00+00:00</updated><author><name>djalecor</name></author><id>tag:alecor.net,2023-02-27:/canciones-de-la-hinchada-argentina-es.html</id><summary type="html">&lt;p&gt;Las canciones de la hinchada Argentina. También las usadas en el mundial de Qatar 2022!&lt;/p&gt;</summary><content type="html">&lt;h1&gt;Canciones Habituales&lt;/h1&gt;
&lt;h2&gt;Vamos vamos&lt;/h2&gt;
&lt;p&gt;Vamos Vamos, Argentina
Vamos, Vamos, a ganar
Que esta banda, quilombera
no te deja, no te deja de alentar&lt;/p&gt;
&lt;h2&gt;El que no salta&lt;/h2&gt;
&lt;p&gt;El que no salta es un ingles...&lt;/p&gt;
&lt;h2&gt;Argentina vamos&lt;/h2&gt;
&lt;p&gt;Argentina, vamos
ponga huevos
que ganamos
ohhhh&lt;/p&gt;
&lt;h2&gt;Vamos Vamos seleccion&lt;/h2&gt;
&lt;p&gt;Vamos vamos seleccion,
Hoy te vinimos a alentar
Para ser campeon
Hoy hay que ganar&lt;/p&gt;
&lt;h1&gt;Cancionero Qatar 2022&lt;/h1&gt;
&lt;h2&gt;En Argentina nací&lt;/h2&gt;
&lt;p&gt;En Argentina nací,
tierra de Diego y Lionel,
de los pibes de Malvinas,
que jamás olvidaré.
No te lo puedo explicar,
porque no vas a entender,
las finales que perdimos,
cuántos años las lloré.
Pero eso se terminó,
porque en el Maracaná,
la final con los brazucas,
les volvió a ganar papá.
Muchachos, ahora nos volvimo' a ilusionar,
quiero ganar la tercera,
quiero ser campeón mundial,
y el Diego, en el cielo lo podemos ver,
con Don Diego y con la Tota,
alentándolo a Lionel.&lt;/p&gt;
&lt;h2&gt;¿Qué te pasa brazuca?&lt;/h2&gt;
&lt;p&gt;¿Qué te pasa brazuca? Todavía seguís esperando...
¿Qué te pasa brazuca? En la favela están todos llorando...
Van pasando los años, te acordás del Mundial del 50...
Están todos cagados, tenés miedo que pase de vuelta...
Porque Messi tiene puesta la corona, ohoh...
Y la magia de su zurda que enamora, ohoh...
Para colmo te acordás de Maradona...
Sé que te duele, que te lastima; pero esta Copa, es de Argentina...&lt;/p&gt;
&lt;h2&gt;¿Brasilero qué pasó?&lt;/h2&gt;
&lt;p&gt;Brasilero qué pasó, arrugó el pentacampeón. Messi se fue para Río y con la copa se quedó. Somos la banda argentina y siempre vamos a alentar, Porque tenemos el sueño de salir campeón mundial. Yo soy así, soy argentino, Ingleses putos de Malvinas no me olvido.Yo soy así, vengo a alentarte, a la Argentina yo la sigo a todas partes.&lt;/p&gt;
&lt;h2&gt;Soy argentino&lt;/h2&gt;
&lt;p&gt;Te sigo desde pendejo siempre a todos lados, y hoy te vengo a ver descontrolado, y más te aliento, si vas perdiendo, un sentimiento no traten de entenderlo. No se compara, con otra hinchada soy argentino, en las buenas y en las malas.&lt;/p&gt;
&lt;h2&gt;Esta es la banda loca de la argentina&lt;/h2&gt;
&lt;p&gt;Esta la banda loca de la Argentina,
la que de las Malvinas nunca se olvida,
la que deja la vida por los colores,
la que le pide huevo a los jugadores,
para ser campeones.&lt;/p&gt;
&lt;h2&gt;La que tiene a Messi y Maradona&lt;/h2&gt;
&lt;p&gt;Vamos Argentina, sabés que yo te quiero, hoy hay que ganar y ser primero.
Esta hinchada loca, deja todo por la Copa, la que tiene a Messi y Maradona.
Ponga huevos vaya al frente Argentina, ponga huevos vaya al frente jugadores.
Este año tenemos que dar la vuelta,
nos vinimos todos a Doha a ser campeones.&lt;/p&gt;
&lt;h2&gt;Y no me importa lo que digan&lt;/h2&gt;
&lt;p&gt;Hay que alentar hasta la muerte,
porque a Argentina la quiero, 
porque es un sentimiento, se lleva en el corazón, y no me importa lo que digan esos putos periodistas la puta que lo parió,
Ohoh hay que alentar a la Selección.
Ohoh hay que alentar a la Selección.
Hay que alentar hasta la muerte,
porque a Argentina ya la quiero porque es un sentimiento y se lleva en el corazón,
y no me importa lo q digan esos putos periodistas la puta que lo parió,
Ohoh hay que alentar a la Selección.
Oh oh, oh oh hay que alentar a la Selección.&lt;/p&gt;
&lt;h2&gt;Vinimos todos juntos a Doha&lt;/h2&gt;
&lt;p&gt;Vinimos todos juntos a doha a alentar a argentina
Dejando muchas cosas de lado para verte a vos
La banda nunca se olvidara de la islas Malvinas
Y ya le demostró al mundo entero lo que es la pasión
Ganar la copa del mundo es lo que imagino
Y los jugadores dejando la vida en cada partido
No importa donde sea el mundial igual te seguimos
Y todo juntos vamos alentar 
Vamos argentina vamos a ganar 
Todos los brazucas se pondrán a llorar
Porque le dimos la vuelta en el maracana&lt;/p&gt;
&lt;h2&gt;Esta es la banda&lt;/h2&gt;
&lt;p&gt;Esta es la banda de la Argentina
La que se pone, de la cabeza
Esta es la banda mas loca que hay
Se mueve para aca se mueve para alla
Esta es la banda mas loca que hay&lt;/p&gt;</content><category term="Lyrics"/><category term="Argentina"/><category term="canciones"/><category term="hinchada"/><category term="letras de canciones"/><category term="Qatar 2022"/><category term="FIFA"/><category term="World Cup"/><category term="Español"/></entry><entry><title>Keys to a happy life</title><link href="https://alecor.net/content/2023/02/27/keys-to-a-happy-life.html" rel="alternate"/><published>2023-02-27T00:00:00+00:00</published><updated>2023-02-27T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-27:/content/2023/02/27/keys-to-a-happy-life.html</id><summary type="html">&lt;p&gt;Studies available today show these are the keys to have a happy life.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Based on various studies, here are some keys to a happy life:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Positive Relationships: Having strong and meaningful relationships with family, friends, and community members is one of the most important factors for happiness.&lt;/li&gt;
&lt;li&gt;Gratitude: Being grateful for what you have and focusing on the positives in life can boost happiness.&lt;/li&gt;
&lt;li&gt;Mindfulness: Being present in the moment and practicing mindfulness techniques like meditation and deep breathing can help reduce stress and increase happiness.&lt;/li&gt;
&lt;li&gt;Purpose and Meaning: Having a sense of purpose and meaning in life can contribute to happiness and overall well-being.&lt;/li&gt;
&lt;li&gt;Physical Activity: Regular exercise and physical activity can improve mood and overall well-being.&lt;/li&gt;
&lt;li&gt;Self-care: Taking care of yourself, including getting enough sleep, eating well, and engaging in hobbies and activities you enjoy, can boost happiness.&lt;/li&gt;
&lt;li&gt;Helping others: Acts of kindness and volunteering can boost happiness and overall well-being.&lt;/li&gt;
&lt;li&gt;Financial Stability: Having financial stability and security can contribute to happiness and reduce stress.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;It's worth noting that the keys to a happy life can differ from person to person, and what works for one individual may not work for another. Ultimately, the key to a happy life is finding what works best for you and striving to incorporate those elements into your daily routine.&lt;/p&gt;</content><category term="Insightful"/><category term="insightful"/><category term="habits"/><category term="English"/></entry><entry><title>List of Python libraries for Data Science &amp; Machine Learning</title><link href="https://alecor.net/content/2023/02/27/list-of-python-libraries-for-data-science-machine-learning.html" rel="alternate"/><published>2023-02-27T00:00:00+00:00</published><updated>2023-02-27T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-27:/content/2023/02/27/list-of-python-libraries-for-data-science-machine-learning.html</id><summary type="html">&lt;p&gt;A small curated list of Python libraries and frameworks in use for Data Science, Quantitative Development and other technical use cases. Of course, you may need any of these in other domains as well.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Here is a short curated list of some of the most commonly used Python frameworks and libraries in Machine Learning and Data Science, in no particular order:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;NumPy - a library for working with arrays and numerical operations&lt;/li&gt;
&lt;li&gt;Pandas - a library for data manipulation and analysis&lt;/li&gt;
&lt;li&gt;Scikit-learn - a library for machine learning algorithms and tools&lt;/li&gt;
&lt;li&gt;TensorFlow - an open-source software library for dataflow and differentiable programming&lt;/li&gt;
&lt;li&gt;PyTorch - an open-source machine learning framework for building and training neural networks&lt;/li&gt;
&lt;li&gt;Keras - a high-level neural networks API, written in Python and capable of running on top of TensorFlow, Theano, or CNTK.&lt;/li&gt;
&lt;li&gt;Matplotlib - a plotting library for creating static, animated, and interactive visualizations in Python&lt;/li&gt;
&lt;li&gt;Seaborn - a visualization library based on Matplotlib, designed for statistical graphics&lt;/li&gt;
&lt;li&gt;SciPy - a library for scientific computing and technical computing&lt;/li&gt;
&lt;li&gt;Statsmodels - a library for statistical modeling and testing&lt;/li&gt;
&lt;li&gt;NLTK - a natural language processing library for Python&lt;/li&gt;
&lt;li&gt;Gensim - a library for topic modeling and document similarity&lt;/li&gt;
&lt;li&gt;spaCy - a library for natural language processing and text analysis&lt;/li&gt;
&lt;li&gt;OpenCV - a computer vision library for real-time image processing and object recognition&lt;/li&gt;
&lt;li&gt;H2O - an open-source machine learning platform that supports distributed computing and big data&lt;/li&gt;
&lt;li&gt;XGBoost - an optimized distributed gradient boosting library designed to be highly efficient, flexible, and portable&lt;/li&gt;
&lt;li&gt;LightGBM - a gradient boosting framework that uses tree-based learning algorithms&lt;/li&gt;
&lt;li&gt;CatBoost - a machine learning library that uses gradient-boosted decision trees&lt;/li&gt;
&lt;li&gt;Dask - a library for parallel computing in Python&lt;/li&gt;
&lt;li&gt;Vaex - a library for lazy and out-of-memory data processing and visualization&lt;/li&gt;
&lt;li&gt;PySpark - a library for distributed computing using Apache Spark&lt;/li&gt;
&lt;li&gt;Altair - a declarative visualization library for creating interactive visualizations in Python&lt;/li&gt;
&lt;li&gt;Plotly - a visualization library for creating interactive web-based visualizations&lt;/li&gt;
&lt;li&gt;Bokeh - a library for creating interactive visualizations and data applications in the browser&lt;/li&gt;
&lt;li&gt;Dash - a web application framework for building analytical applications using Python and HTML&lt;/li&gt;
&lt;li&gt;Streamlit - an open-source framework for creating interactive web applications for machine learning and data science&lt;/li&gt;
&lt;li&gt;Prophet - a forecasting library for time series data&lt;/li&gt;
&lt;li&gt;TensorFlow Probability - a library for probabilistic modeling and Bayesian inference in TensorFlow&lt;/li&gt;
&lt;li&gt;PyMC3 - a Python library for Bayesian modeling and probabilistic programming&lt;/li&gt;
&lt;li&gt;Scrapy - a web crawling and scraping framework for Python&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This is not an exhaustive list and there are many other libraries and frameworks that can be useful in Machine Learning and Data Science. The popularity and usage of specific libraries may also vary depending on the specific task, application, and industry.&lt;/p&gt;</content><category term="Data Science"/><category term="machine learning"/><category term="data science"/><category term="python"/><category term="frameworks"/><category term="libraries"/><category term="list"/><category term="English"/></entry><entry><title>Pasos de Tango</title><link href="https://alecor.net/pasos-de-tango-es.html" rel="alternate"/><published>2023-02-27T00:00:00+00:00</published><updated>2023-04-04T00:00:00+01:00</updated><author><name>djalecor</name></author><id>tag:alecor.net,2023-02-27:/pasos-de-tango-es.html</id><summary type="html">&lt;p&gt;Lista de pasos en tango, usando sus nombres. Sirve como referencia y para no olvidarse!&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Pasos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Salida&lt;/li&gt;
&lt;li&gt;Salida atras&lt;/li&gt;
&lt;li&gt;Salida cruzada&lt;/li&gt;
&lt;li&gt;Salida Americana&lt;/li&gt;
&lt;li&gt;Caminata&lt;/li&gt;
&lt;li&gt;Caminata cruzada&lt;/li&gt;
&lt;li&gt;Ocho adelante&lt;/li&gt;
&lt;li&gt;Ocho atras&lt;/li&gt;
&lt;li&gt;Ocho cortado&lt;/li&gt;
&lt;li&gt;Abrazo abierto&lt;/li&gt;
&lt;li&gt;Abrazo cerrado&lt;/li&gt;
&lt;li&gt;Codigo de giro&lt;/li&gt;
&lt;li&gt;Media luna&lt;/li&gt;
&lt;li&gt;Calecita&lt;/li&gt;
&lt;li&gt;Parada&lt;/li&gt;
&lt;li&gt;Enrosques&lt;/li&gt;
&lt;li&gt;Sandwich&lt;/li&gt;
&lt;li&gt;Arrastre&lt;/li&gt;
&lt;li&gt;Barridas&lt;/li&gt;
&lt;li&gt;Ganchos&lt;/li&gt;
&lt;li&gt;Sacadas&lt;/li&gt;
&lt;li&gt;Voleos&lt;/li&gt;
&lt;li&gt;Volcadas&lt;/li&gt;
&lt;li&gt;Colgadas&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Adornos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Lapiz&lt;/li&gt;
&lt;li&gt;Planeo&lt;/li&gt;
&lt;/ul&gt;</content><category term="Dancing"/><category term="dancing"/><category term="tango"/><category term="baile"/><category term="Español"/></entry><entry><title>Python must know libraries and frameworks for Data Science</title><link href="https://alecor.net/content/2023/02/27/python-must-know-libraries-and-frameworks-for-data-science.html" rel="alternate"/><published>2023-02-27T00:00:00+00:00</published><updated>2023-02-27T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-27:/content/2023/02/27/python-must-know-libraries-and-frameworks-for-data-science.html</id><summary type="html">&lt;p&gt;List and summary description of many Python libraries and frameworks that are used in the Data Science community in particular.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Here is a curated list of Python frameworks and libraries. I have to say, creating this I thought no one could have used them all, but after many years working with Python, I have come across all of them at some point, even if for small uses.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;NumPy - NumPy is a library for the Python programming language that adds support for large, multi-dimensional arrays and matrices, along with a large collection of high-level mathematical functions to operate on these arrays.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pandas - Pandas is a fast, powerful, flexible, and easy-to-use open-source data analysis and manipulation library for Python. It provides data structures for efficiently storing large datasets and tools for processing, cleaning, and transforming data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Scikit-learn - Scikit-learn is a simple and efficient tool for data mining and data analysis built on NumPy, SciPy, and matplotlib. It provides a range of supervised and unsupervised learning algorithms in Python, including classification, regression, clustering, and dimensionality reduction.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Matplotlib - Matplotlib is a plotting library for the Python programming language and its numerical mathematics extension NumPy. It provides an object-oriented API for embedding plots into applications using general-purpose GUI toolkits like Tkinter, wxPython, Qt, or GTK.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TensorFlow - TensorFlow is an open-source software library for dataflow and differentiable programming across a range of tasks. It is a symbolic math library, and is also used for machine learning applications such as neural networks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Keras - Keras is a high-level neural networks API, written in Python and capable of running on top of TensorFlow, CNTK, or Theano. It was developed with a focus on enabling fast experimentation and easy-to-use interfaces for creating neural networks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PyTorch - PyTorch is an open source machine learning library based on the Torch library, used for applications such as computer vision and natural language processing. It is primarily developed by Facebook's AI Research lab.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Transformers - Transformers is a Python library that provides tools for natural language processing (NLP), particularly for working with pre-trained language models. It includes a range of state-of-the-art models for various NLP tasks, such as text classification, question-answering, and language translation. The library also provides a unified API for working with these models, making it easy to switch between different models and tasks. Transformers also includes a range of tools for fine-tuning pre-trained models on new datasets, and for optimizing model performance on specific tasks. In addition, Transformers supports a range of popular deep learning frameworks, including PyTorch and TensorFlow. Overall, Transformers is a powerful tool for working with pre-trained language models and developing NLP applications, making it well-suited for tasks such as sentiment analysis, chatbots, and language translation.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Seaborn - Seaborn is a Python data visualization library based on matplotlib. It provides a high-level interface for drawing attractive and informative statistical graphics.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;OpenCV - OpenCV (Open Source Computer Vision Library) is an open-source computer vision and machine learning software library. OpenCV was built to provide a common infrastructure for computer vision applications and to accelerate the use of machine perception in commercial products.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;XGBoost - XGBoost is an open-source software library which provides a gradient boosting framework for C++, Java, Python, R, and Julia. It is widely used for regression and classification problems.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Statsmodels - Statsmodels is a Python module that provides classes and functions for the estimation of many different statistical models, as well as for conducting statistical tests and exploratory data analysis.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;LightGBM - LightGBM is an open-source gradient boosting framework that uses tree-based learning algorithms. It is designed to be efficient and scalable, and is used for both classification and regression tasks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Plotly - Plotly is a web-based data visualization platform that allows users to create interactive charts, graphs, and dashboards. It is also available as a Python library that can be used to create interactive plots in Jupyter notebooks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SciPy - SciPy is a library for scientific computing in Python. It provides modules for optimization, integration, interpolation, eigenvalue problems, etc.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NLTK - The Natural Language Toolkit (NLTK) is a Python library that provides tools for working with human language data. It provides tools for tokenization, stemming, tagging, parsing, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Gensim - Gensim is a Python library for topic modelling, document indexing and similarity retrieval with large corpora. It is built on top of NumPy, SciPy, and matplotlib.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Theano - Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently. It is particularly well-suited for deep learning and other computationally-intensive tasks. Theano can automatically generate efficient code for GPU or CPU execution, and supports symbolic differentiation for gradient-based optimization algorithms.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ray - Ray is a Python library that focuses on distributed computing, providing a range of tools for scaling Python applications across multiple nodes or machines. It provides a high-level API for parallelizing Python functions and supports a range of distributed data structures and machine learning algorithms. Ray is designed to be easy to use, and it can be integrated with existing Python codebases without needing major code changes. Ray also includes features for automatic fault tolerance, so it can recover from failures without needing manual intervention. In addition to distributed computing, Ray also includes support for reinforcement learning and other machine learning algorithms. Overall, Ray is a powerful tool for scaling Python applications across multiple machines, making it well-suited for large-scale data processing and machine learning workloads.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Joblib - Joblib is a Python library that provides tools for parallel computing within a single machine. It provides a range of tools for parallelizing Python functions across multiple CPU cores, and supports caching of intermediate results to reduce computation time. Joblib is often used for embarrassingly parallel problems, where the input data can be easily divided into independent chunks that can be processed in parallel. Joblib is designed to be easy to use, and it can be integrated with existing Python codebases without needing major code changes. Joblib also includes features for memory management, such as the ability to unload objects from memory when they are no longer needed. Overall, Joblib is a powerful tool for speeding up Python code by parallelizing computation, making it well-suited for machine learning, scientific computing, and other computationally intensive workloads.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prefect - Prefect is a Python library that provides tools for building, scheduling, and monitoring data workflows. It allows developers to define complex workflows as Python code, with tasks represented as Python functions that can be composed together into larger workflows. Prefect provides a range of features for managing workflows, including task-level retries, task dependencies, and automatic logging and visualization of workflow execution. Prefect also includes a dashboard for monitoring workflow execution and viewing performance metrics. Prefect is designed to be highly flexible and can be used with a range of data processing tools, including Pandas, Dask, and Apache Spark. Overall, Prefect is a powerful tool for managing complex data workflows, making it well-suited for data engineering, data science, and other data-intensive applications.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pygame - Pygame is a set of Python modules designed for writing video games. It includes computer graphics and sound libraries designed to be used with the Python programming language.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Flask - Flask is a micro web framework written in Python. It is classified as a microframework because it does not require particular tools or libraries.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dash - Dash is a Python framework for building analytical web applications. It provides a set of high-level components like graphs, tables, and text boxes, and allows you to combine these components to create complex dashboards.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Beautiful Soup - Beautiful Soup is a Python library that allows you to extract data from HTML and XML files. It provides simple ways to navigate, search, and modify the parse tree.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SQLAlchemy - SQLAlchemy is an SQL toolkit and ORM that provides a set of high-level API for connecting to relational databases like MySQL, PostgreSQL, SQLite, and Oracle.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Django - Django is a high-level Python web framework that enables the rapid development of secure and maintainable websites. It follows the Model-View-Controller (MVC) architectural pattern and provides a set of libraries and tools for handling common web development tasks.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pygame Zero - Pygame Zero is a minimal game development framework for Python. It is built on top of Pygame and provides a simple API for creating games without the need to write boilerplate code.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FastAPI - FastAPI is a modern, fast (high-performance) web framework for building APIs with Python 3.7+ based on standard Python type hints. It is designed to be easy to use and fast to develop with.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;NetworkX - NetworkX is a Python package for the creation, manipulation, and study of complex networks. It provides tools for working with graphs and networks, including algorithms for computing network properties and visualizing graphs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Scrapy - Scrapy is an open-source web-crawling framework for Python. It provides a set of tools and libraries for extracting structured data from websites and APIs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pandas-Profiling - Pandas-Profiling is a library for creating exploratory data analysis reports in Python. It provides a set of tools for generating statistical summaries, visualizations, and data quality checks for large datasets.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FastText - FastText is an open-source, free, lightweight library that allows users to learn text representations and perform text classification tasks. It is developed by Facebook's AI Research team.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kivy - Kivy is an open-source Python library for developing multi-touch applications. It provides a set of high-level widgets for creating desktop and mobile apps, and supports a range of input methods, including touch, mouse, and keyboard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PySpark - PySpark is a Python API for Apache Spark, a fast and general-purpose cluster computing system. It allows you to write Spark applications using Python, and provides a set of libraries and tools for working with large datasets.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Requests - Requests is a Python library for making HTTP requests. It provides a simple and elegant way to interact with RESTful APIs and web services.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pillow - Pillow is a fork of the Python Imaging Library (PIL), a library for opening, manipulating, and saving many different image file formats. It provides a set of functions for working with images, including resizing, cropping, and adding filters.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;pytest - pytest is a Python testing framework that makes it easy to write and run tests. It provides a simple and intuitive API for defining tests, and supports fixtures for setting up test data and dependencies.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><category term="Data Science"/><category term="machine learning"/><category term="data science"/><category term="python"/><category term="frameworks"/><category term="libraries"/><category term="English"/></entry><entry><title>The best exercises to do at home</title><link href="https://alecor.net/content/2023/02/27/the-best-exercises-to-do-at-home.html" rel="alternate"/><published>2023-02-27T00:00:00+00:00</published><updated>2023-02-27T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-27:/content/2023/02/27/the-best-exercises-to-do-at-home.html</id><summary type="html">&lt;p&gt;Current studies suggest that these are the most useful, impactful exercises you can do at home.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Here are some of the best, most useful exercises that can be done at home and are supported by scientific studies:&lt;/p&gt;
&lt;p&gt;Bodyweight Squats: Bodyweight squats are an excellent exercise to strengthen the legs, glutes, and core muscles. According to a study published in the Journal of Strength and Conditioning Research, bodyweight squats activate the same muscle groups as barbell squats and are an effective exercise for improving lower body strength.&lt;/p&gt;
&lt;p&gt;Push-Ups: Push-ups are a classic exercise that can be done anywhere and are a great way to improve upper body strength. According to a study published in the Journal of Strength and Conditioning Research, push-ups activate multiple muscle groups in the chest, shoulders, and triceps and are an effective exercise for improving upper body strength and endurance.&lt;/p&gt;
&lt;p&gt;Plank: The plank is a core-strengthening exercise that can be done without any equipment. According to a study published in the Journal of Strength and Conditioning Research, the plank is an effective exercise for improving core stability and reducing the risk of lower back pain.&lt;/p&gt;
&lt;p&gt;Burpees: Burpees are a full-body exercise that can improve cardiovascular endurance, strength, and power. According to a study published in the Journal of Strength and Conditioning Research, burpees are an effective exercise for improving cardiorespiratory fitness and overall strength.&lt;/p&gt;
&lt;p&gt;Lunges: Lunges are a great exercise for strengthening the legs, glutes, and core muscles. According to a study published in the Journal of Sports Science and Medicine, lunges are an effective exercise for improving lower body strength and balance.&lt;/p&gt;
&lt;p&gt;Jumping Jacks: Jumping jacks are a simple yet effective exercise that can improve cardiovascular endurance and overall fitness. According to a study published in the Journal of Strength and Conditioning Research, jumping jacks are an effective exercise for improving cardiorespiratory fitness and can be used as part of a high-intensity interval training (HIIT) program.&lt;/p&gt;
&lt;p&gt;Yoga: Yoga is a low-impact exercise that can improve flexibility, balance, and strength. According to a study published in the International Journal of Yoga, practicing yoga can improve overall physical fitness, reduce stress, and improve quality of life.&lt;/p&gt;
&lt;p&gt;It is important to note that before starting any exercise program, it is recommended to consult with a healthcare professional, especially if you have any medical conditions or injuries.&lt;/p&gt;</content><category term="Health"/><category term="health"/><category term="exercise"/><category term="longevity"/><category term="English"/></entry><entry><title>Keys to a healthy lifestyle and extend your life expectancy</title><link href="https://alecor.net/content/2023/02/26/keys-to-healthy-lifestyle-and-extend-life-expectancy.html" rel="alternate"/><published>2023-02-26T00:00:00+00:00</published><updated>2023-02-26T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-26:/content/2023/02/26/keys-to-healthy-lifestyle-and-extend-life-expectancy.html</id><summary type="html">&lt;p&gt;Based on the latest studies and research, these are the the keys.&lt;/p&gt;</summary><content type="html">&lt;p&gt;There are several keys to maintaining a healthy lifestyle and extending life expectancy, and research has identified several practices that are particularly effective. Here are some of the most important ones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A healthy diet: Eating a balanced, nutritious diet that includes plenty of fruits, vegetables, whole grains, and lean proteins can help reduce the risk of chronic diseases like heart disease, diabetes, and cancer. Studies have shown that certain diets, such as the Mediterranean diet or a plant-based diet, can be particularly beneficial.&lt;/li&gt;
&lt;li&gt;Regular exercise: Engaging in regular physical activity has been shown to reduce the risk of many chronic diseases and improve overall health. Experts recommend at least 150 minutes of moderate-intensity exercise or 75 minutes of vigorous-intensity exercise per week.&lt;/li&gt;
&lt;li&gt;Not smoking: Smoking is one of the leading causes of preventable death, and quitting smoking is one of the best things you can do for your health. Even quitting later in life can help reduce the risk of many chronic diseases.&lt;/li&gt;
&lt;li&gt;Limiting alcohol consumption: Excessive alcohol consumption can increase the risk of many health problems, including liver disease, certain cancers, and heart disease. Experts recommend no more than one drink per day for women and two drinks per day for men.&lt;/li&gt;
&lt;li&gt;Maintaining a healthy weight: Being overweight or obese can increase the risk of many chronic diseases, so it's important to maintain a healthy weight through a combination of diet and exercise.&lt;/li&gt;
&lt;li&gt;Getting enough sleep: Sleep plays a crucial role in overall health, and chronic sleep deprivation has been linked to a variety of health problems. Most adults need between seven and nine hours of sleep per night.&lt;/li&gt;
&lt;li&gt;Managing stress: Chronic stress can contribute to a variety of health problems, including heart disease, high blood pressure, and depression. Finding healthy ways to manage stress, such as meditation, yoga, or regular exercise, can help improve overall health.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In addition to these lifestyle factors, regular preventive care, such as cancer screenings and vaccinations, can also help maintain good health and extend life expectancy. It's also important to stay connected with others, maintain social relationships, and cultivate a sense of purpose and meaning in life.&lt;/p&gt;
&lt;p&gt;While there are no guarantees when it comes to health and longevity, following these practices can help improve overall health and reduce the risk of many chronic diseases.&lt;/p&gt;</content><category term="Health"/><category term="health"/><category term="diet"/><category term="life expectancy"/><category term="research"/><category term="studies"/><category term="food"/><category term="chatgpt"/><category term="English"/></entry><entry><title>Machine Learning Classification - An Introduction</title><link href="https://alecor.net/content/2023/02/26/machine-learning-classification-an-introduction.html" rel="alternate"/><published>2023-02-26T00:00:00+00:00</published><updated>2023-02-27T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-26:/content/2023/02/26/machine-learning-classification-an-introduction.html</id><summary type="html">&lt;p&gt;An introduction to Machine Learning Classification, models, applicability and scikit-learn specifics to get an initial overview of what's possible.&lt;/p&gt;</summary><content type="html">&lt;p&gt;There are several machine learning categorization models that are commonly used, depending on the specific problem and the nature of the data. Here are some of the most commonly used models:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Logistic Regression: This is a popular model for binary classification problems. It models the probability of the positive class using a logistic function.&lt;/li&gt;
&lt;li&gt;Support Vector Machines (SVMs): SVMs are a flexible model that can be used for both binary and multiclass classification problems. They aim to find a hyperplane that separates the classes with maximum margin.&lt;/li&gt;
&lt;li&gt;Decision Trees: Decision trees are a simple yet powerful model that can be used for both classification and regression problems. They partition the feature space into regions based on simple rules and can be interpreted easily.&lt;/li&gt;
&lt;li&gt;Random Forests: Random forests are an ensemble model that combines multiple decision trees to improve performance and reduce overfitting. They randomly sample the data and features during training to create a diverse set of trees.&lt;/li&gt;
&lt;li&gt;Gradient Boosting Machines: Gradient boosting machines are another ensemble model that combines multiple weak models to create a strong model. They iteratively train a series of decision trees to correct the errors of the previous trees.&lt;/li&gt;
&lt;li&gt;Neural Networks: Neural networks are a flexible and powerful model that can be used for a wide range of classification problems. They consist of multiple layers of interconnected nodes and can learn complex non-linear relationships between the input and output.&lt;/li&gt;
&lt;li&gt;Naive Bayes: Naive Bayes is a probabilistic model that is commonly used for text classification and spam filtering. It models the conditional probabilities of the features given the class using Bayes' theorem.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These are just a few examples of the most commonly used ML categorization models in production. The choice of model depends on the specific problem, the nature of the data, and the desired performance metrics.&lt;/p&gt;
&lt;h2&gt;Scikit-learn for Classification&lt;/h2&gt;
&lt;p&gt;Scikit-learn provides a wide range of algorithms for classification problems, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;LogisticRegression&lt;/li&gt;
&lt;li&gt;LinearSVC and SVC (for SVMs)&lt;/li&gt;
&lt;li&gt;DecisionTreeClassifier&lt;/li&gt;
&lt;li&gt;RandomForestClassifier&lt;/li&gt;
&lt;li&gt;GradientBoostingClassifier&lt;/li&gt;
&lt;li&gt;MLPClassifier (for neural networks)&lt;/li&gt;
&lt;li&gt;MultinomialNB and BernoulliNB (for Naive Bayes)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Scikit-learn also provides tools for preprocessing data, handling missing values, feature selection, and model selection, among others. This makes it a very versatile and powerful library for building machine learning models for classification problems.&lt;/p&gt;
&lt;p&gt;There are several preprocessing techniques that are commonly used to prepare data for classification tasks. Some of the most widely used techniques include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Handling missing data: If your dataset contains missing values, you may need to impute them using techniques such as mean imputation, median imputation, or regression imputation.&lt;/li&gt;
&lt;li&gt;Handling categorical features: If your dataset contains categorical features, you may need to encode them using techniques such as one-hot encoding, label encoding, or ordinal encoding.&lt;/li&gt;
&lt;li&gt;Feature scaling: Many machine learning algorithms work best when the features are on a similar scale. Common feature scaling techniques include standardization (scaling features to have zero mean and unit variance) and normalization (scaling features to a range of 0 to 1).&lt;/li&gt;
&lt;li&gt;Dimensionality reduction: If your dataset contains a large number of features, you may need to reduce the dimensionality of the data using techniques such as principal component analysis (PCA) or linear discriminant analysis (LDA).&lt;/li&gt;
&lt;li&gt;Feature engineering: This involves creating new features from the existing features in your dataset. Feature engineering can be done manually or using automated techniques such as feature selection or feature extraction.&lt;/li&gt;
&lt;li&gt;Outlier detection: Outliers can skew the results of machine learning models. Techniques such as Z-score, Mahalanobis distance, and isolation forest can be used to detect and remove outliers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These preprocessing techniques can be applied using scikit-learn's various preprocessing modules, such as &lt;code&gt;Imputer&lt;/code&gt; for missing data imputation, &lt;code&gt;LabelEncoder&lt;/code&gt; for categorical feature encoding, &lt;code&gt;MinMaxScaler&lt;/code&gt; and &lt;code&gt;StandardScaler&lt;/code&gt; for feature scaling, &lt;code&gt;PCA&lt;/code&gt; and LDA for dimensionality reduction, and &lt;code&gt;LocalOutlierFactor&lt;/code&gt; and &lt;code&gt;EllipticEnvelope&lt;/code&gt; for outlier detection.&lt;/p&gt;</content><category term="Data Science"/><category term="machine learning"/><category term="data science"/><category term="classification"/><category term="sklearn"/><category term="scikit-learn"/><category term="English"/></entry><entry><title>What is a healthy diet?</title><link href="https://alecor.net/content/2023/02/26/what-is-a-healthy-diet.html" rel="alternate"/><published>2023-02-26T00:00:00+00:00</published><updated>2023-02-26T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-26:/content/2023/02/26/what-is-a-healthy-diet.html</id><summary type="html">&lt;p&gt;Based on the latest studies and research, these is what a healthy diet means.&lt;/p&gt;</summary><content type="html">&lt;p&gt;A healthy diet is a crucial component of overall health and wellness, and research has identified several key components of a healthy eating pattern. Here are some of the key findings on a healthy diet, daily requirements, and specific foods:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Macronutrients: A healthy diet should include a balance of macronutrients, which are the nutrients that we need in large quantities. These include carbohydrates, proteins, and fats. Experts recommend that carbohydrates should make up about 45-65% of daily calories, proteins should make up about 10-35%, and fats should make up about 20-35%.&lt;/li&gt;
&lt;li&gt;Micronutrients: A healthy diet should also include a variety of micronutrients, which are the nutrients that we need in smaller quantities. These include vitamins, minerals, and other essential nutrients. Experts recommend that people get these nutrients from a variety of whole foods, such as fruits, vegetables, whole grains, lean proteins, and healthy fats.&lt;/li&gt;
&lt;li&gt;Daily requirements: The specific daily requirements for each nutrient depend on a variety of factors, including age, sex, weight, and activity level. The US Dietary Guidelines recommend a daily intake of 2 cups (500 mL) of fruit, 2.5 cups (625 mL) of vegetables, 6 ounces (170 g) of grains, 3 cups (750 mL) of dairy, and 5.5 ounces (155 g) of protein foods for adults on a 2,000 calorie diet.&lt;/li&gt;
&lt;li&gt;Specific foods: Certain foods have been shown to be particularly beneficial for overall health. For example, fruits and vegetables are rich in vitamins, minerals, and antioxidants, and have been linked to a reduced risk of chronic diseases like heart disease and cancer. Whole grains, such as brown rice and whole-wheat bread, are high in fiber and can help improve digestive health. Lean proteins, such as chicken, fish, and legumes, are important for building and repairing tissues. Healthy fats, such as those found in nuts, seeds, and avocados, can help improve heart health.&lt;/li&gt;
&lt;li&gt;Dietary patterns: In addition to individual foods, research has also identified certain dietary patterns that are associated with improved health outcomes. For example, the Mediterranean diet, which is rich in fruits, vegetables, whole grains, and healthy fats, has been linked to a reduced risk of heart disease, cancer, and other chronic diseases. A plant-based diet, which emphasizes plant-based foods and minimizes animal-based foods, has also been linked to improved health outcomes.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Overall, a healthy diet should include a variety of whole foods that provide a balance of macronutrients and micronutrients. Specific foods that are particularly beneficial include fruits, vegetables, whole grains, lean proteins, and healthy fats. It's also important to consider dietary patterns that have been associated with improved health outcomes. By following a healthy diet, people can improve their overall health and reduce the risk of chronic diseases.&lt;/p&gt;</content><category term="Health"/><category term="health"/><category term="diet"/><category term="research"/><category term="studies"/><category term="food"/><category term="chatgpt"/><category term="English"/></entry><entry><title>How do colors affect purchases</title><link href="https://alecor.net/content/2023/02/25/how-do-colors-affect-purchases.html" rel="alternate"/><published>2023-02-25T00:00:00+00:00</published><updated>2023-02-25T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-25:/content/2023/02/25/how-do-colors-affect-purchases.html</id><summary type="html">&lt;p&gt;How colors affect purchases.&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;img alt="Color Purchases" src="http://geeksroom.com/wp-content/uploads/2012/03/color-purchases.jpg"&gt;&lt;/p&gt;</content><category term="Infographics"/><category term="infographics"/><category term="colors"/><category term="marketing"/><category term="sales"/><category term="English"/></entry><entry><title>Kafka and Python</title><link href="https://alecor.net/content/2023/02/25/kafka-and-python.html" rel="alternate"/><published>2023-02-25T00:00:00+00:00</published><updated>2024-10-30T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-25:/content/2023/02/25/kafka-and-python.html</id><summary type="html">&lt;p&gt;PyCon presentation on Python using Kafka.&lt;/p&gt;</summary><content type="html">&lt;div style="text-align: center;"&gt;
    &lt;iframe width="560" height="315" src="https://youtu.be/Ltgt0ekso4c" title="TALK / Francesco Tisiot / Event-driven applications: Apache Kafka and Python" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</content><category term="PyCon"/><category term="python"/><category term="kafka"/><category term="producer"/><category term="consumer"/><category term="micro-services"/><category term="English"/></entry><entry><title>Must have open source software</title><link href="https://alecor.net/content/2023/02/25/must-have-open-source-software.html" rel="alternate"/><published>2023-02-25T00:00:00+00:00</published><updated>2023-04-04T00:00:00+01:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-25:/content/2023/02/25/must-have-open-source-software.html</id><summary type="html">&lt;p&gt;Must have open source software anyone will have to use at some point.&lt;/p&gt;</summary><content type="html">&lt;p&gt;List of open-source software that you will use at some point, or you didn't know you needed...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Obsidian&lt;ul&gt;
&lt;li&gt;&lt;a href="https://obsidian.md/download"&gt;https://obsidian.md/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;OBS Studio&lt;ul&gt;
&lt;li&gt;&lt;a href="https://obsproject.com/download"&gt;https://obsproject.com/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ShareX&lt;ul&gt;
&lt;li&gt;&lt;a href="https://getsharex.com/downloads"&gt;https://getsharex.com/downloads&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;TinyWall&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tinywall.pados.hu/download.php"&gt;https://tinywall.pados.hu/download.php&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;7-Zip&lt;ul&gt;
&lt;li&gt;&lt;a href="https://7-zip.org/download.html"&gt;https://7-zip.org/download.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;VLC&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.videolan.org/vlc/download-windows.en_GB.html"&gt;https://www.videolan.org/vlc/download-windows.en_GB.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;VirtualBox&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.virtualbox.org/wiki/Downloads"&gt;https://www.virtualbox.org/wiki/Downloads&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Audacity&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.audacityteam.org/download/"&gt;https://www.audacityteam.org/download/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;XMedia Recode&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.xmedia-recode.de/en/download_64bit.php"&gt;https://www.xmedia-recode.de/en/download_64bit.php&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;WinSCP&lt;ul&gt;
&lt;li&gt;&lt;a href="https://winscp.net/eng/download.php"&gt;https://winscp.net/eng/download.php&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;MikTex&lt;ul&gt;
&lt;li&gt;&lt;a href="https://miktex.org/download"&gt;https://miktex.org/download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;GIMP&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.gimp.org/downloads/"&gt;https://www.gimp.org/downloads/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Blender&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.blender.org/download/"&gt;https://www.blender.org/download/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Kodi&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kodi.tv/download/windows/"&gt;https://kodi.tv/download/windows/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LibreOffice&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.libreoffice.org/download/download-libreoffice/"&gt;https://www.libreoffice.org/download/download-libreoffice/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Gramps&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/gramps-project/gramps/releases"&gt;https://github.com/gramps-project/gramps/releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;pandoc&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jgm/pandoc/releases"&gt;https://github.com/jgm/pandoc/releases&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><category term="Software"/><category term="open source"/><category term="software"/><category term="selection"/><category term="English"/></entry><entry><title>Project Management Quotes</title><link href="https://alecor.net/content/2023/02/25/project-management-quotes.html" rel="alternate"/><published>2023-02-25T00:00:00+00:00</published><updated>2023-02-25T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-25:/content/2023/02/25/project-management-quotes.html</id><summary type="html">&lt;p&gt;Project Management quotes; to reflect, to analyze.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Top 10 Project Management Quotes&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"A {specification, design, procedure, test plan} that will not fit on one page cannot be understood." - Mark Ardis&lt;/li&gt;
&lt;li&gt;"All things are created twice; first mentally; then physically.  The key to creativity is to begin with the end in mind, with a vision and a blue print of the desired result." - Stephen Covey&lt;/li&gt;
&lt;li&gt;"Even if you are on the right track, you will get run over if you just sit there." - Will Rogers&lt;/li&gt;
&lt;li&gt;"No matter how good the team or how efficient the methodology, if we’re not solving the right problem, the project fails." -- Woody Williams&lt;/li&gt;
&lt;li&gt;"No one can whistle a symphony. It takes a whole orchestra." - H.E. Luccock&lt;/li&gt;
&lt;li&gt;"Of all the things I’ve done, the most vital is coordinating the talents of those who work for us and pointing them towards a certain goal." - Walt Disney&lt;/li&gt;
&lt;li&gt;"Planning without action is futile, action without planning is fatal." - Cornelius Fitchner&lt;/li&gt;
&lt;li&gt;"Trying to manage a project without project management is like trying to play a football game without a game plan." - K. Tate&lt;/li&gt;
&lt;li&gt;"We will either find a way, or make one." -- Hannibal&lt;/li&gt;
&lt;li&gt;"When I dare to be powerful - to use my strength in the service of my vision, then it becomes less and less important whether I am afraid." - Audre Lorde&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;What is Project Management and What Do Project Managers Do&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"Being a Project Manager is like being an artist, you have the different colored process streams combining into a work of art" -- Greg Cimmarrusti&lt;/li&gt;
&lt;li&gt;"Operations keeps the lights on, strategy provides a light at the end of the tunnel, but project management is the train engine that moves the organization forward." - Joy Gumz&lt;/li&gt;
&lt;li&gt;"Project management can be defined as a way of developing structure in a complex project, where the independent variables of time, cost, resources and human behavior come together." -- Rory Burke&lt;/li&gt;
&lt;li&gt;"Project management is like juggling three balls - time, cost and quality. Program management is like a troupe of circus performers standing in a circle, each juggling-three balls and swapping balls from time to time." - G. Reiss&lt;/li&gt;
&lt;li&gt;"Project management is the art of creating the illusion that any outcome is the result of a series of predetermined, deliberate acts when, in fact, it was dumb luck." --  Harold Kerzner&lt;/li&gt;
&lt;li&gt;"Project managers function as bandleaders who pull together their players each a specialist with individual score and internal rhythm. Under the leader’s direction, they all respond to the same beat." - L.R. Sayles&lt;/li&gt;
&lt;li&gt;"Project managers rarely lack organisational visibility, enjoy considerable variety in their day- to-day duties, and often have the prestige associated with work on the enterprise’s high- priority objectives." -- Meredith and Mantel&lt;/li&gt;
&lt;li&gt;"The P in PM is as much about ‘people management’ as it is about ‘project management’." -- Cornelius Fichtner&lt;/li&gt;
&lt;li&gt;"The project manager is expected to integrate all aspects of the project, ensure that the proper knowledge and resources are available when and where needed, and above all, ensure that the expected results are produced in a timely, cost- effective manner." -- Meredith and Mantel&lt;/li&gt;
&lt;li&gt;"The project manager must be able to develop a fully integrated information and control system to plan, instruct, monitor and control large amounts of data, quickly and accurately to facilitate the problem-solving and decision- making process." -- Rory Burke&lt;/li&gt;
&lt;li&gt;"Whilst you can practice good project management without EVM, you cannot practice EVM effectively without good project management." - Steve Crowther&lt;/li&gt;
&lt;li&gt;"Why do so many professionals say they are project managing, when what they are actually doing is fire fighting?" -- Colin Bentley&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Action and Tasks&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"A task is not done until it is done." -- Louis Frie&lt;/li&gt;
&lt;li&gt;"Add little to little and there will be a big pile" -- Ovid&lt;/li&gt;
&lt;li&gt;"An ounce of action is worth a ton of theory." -  Friedrich Engels&lt;/li&gt;
&lt;li&gt;"Each completed task establishes certain parameters and imposes constraints on the next task." -- Louis Fried&lt;/li&gt;
&lt;li&gt;"He has half the deed done who has made a beginning." - Horace&lt;/li&gt;
&lt;li&gt;"If everything seems under control, you’re not going fast enough." - Mario Andretti&lt;/li&gt;
&lt;li&gt;"Momentum is a fragile force. Its worst enemy: procrastination. Its best friend: a deadline (think Election Day). Implication no. 1 (and there is no no. 2): Get to work! NOW!" -- Tom Peters&lt;/li&gt;
&lt;li&gt;"Pharmaceutical projects are like fresh fruit - they depreciate if they are not tended to, and they do poorly if sitting on the shelf with long periods of inactivity." - R. Burns&lt;/li&gt;
&lt;li&gt;"Plans are only good intentions unless they immediately degenerate into hard work." - Peter Drucker&lt;/li&gt;
&lt;li&gt;"Some things are better done than described." -- Hunt and Thomas&lt;/li&gt;
&lt;li&gt;"To get a project off the ground, tell a colleague it was their idea. They will put their heart and soul into making it successful." - T. Wouhra&lt;/li&gt;
&lt;li&gt;"Working ten hour days allows you to fall behind twice as fast as you could working five hour days." -- Issac Assimov&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Change and Change Management&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"Change is not made without inconvenience, even from worse to better." -- Samuel Johnson&lt;/li&gt;
&lt;li&gt;"Event management is the same as for any project - the project plan needs to include an appropriate change control process." - Brenda Treasure&lt;/li&gt;
&lt;li&gt;"It is always easier to talk about change than to make it." - Alvin Toffler&lt;/li&gt;
&lt;li&gt;"It must be considered that there is nothing more difficult to carry out nor more doubtful of success nor more dangerous to handle than to initiate a new order of things." -- Machiavelli&lt;/li&gt;
&lt;li&gt;"The reasonable man adapts himself to the world; the unreasonable one persists in trying to adapt the world to himself. Therefore, all progress depends on the unreasonable man." -- George Bernard Shaw&lt;/li&gt;
&lt;li&gt;Communication&lt;/li&gt;
&lt;li&gt;"Data is like garbage.  You’d better know what you are going to do with it before you collect it." - Mark Twain&lt;/li&gt;
&lt;li&gt;"Don’t use a sledgehammer to crack a walnut, but equally don’t agree important things informally where there is a chance of a disagreement later over what was agreed." -- Colin Bentley&lt;/li&gt;
&lt;li&gt;"Ensure your documentation is short and sharp and make much more use of people-to-people communication." -- Bentley and Borman&lt;/li&gt;
&lt;li&gt;"If it is not documented, it doesn’t exist.  As long information is retained in someone’s head, it is vulnerable to loss." -- Louis Fried&lt;/li&gt;
&lt;li&gt;"Never allow a person to tell you no who doesn’t have the power to say yes." - Eleanor Roosevelt&lt;/li&gt;
&lt;li&gt;"Reconnaissance memoranda should always be written in the simplest style and be purely descriptive. They should never stray from their objective by introducing extraneous ideas." -- Napoleon Bonaparte&lt;/li&gt;
&lt;li&gt;"The conditions attached to a promise are forgotten and the promise is remembered." -- Edwards, Butler, Hill and Russell&lt;/li&gt;
&lt;li&gt;"What is not on paper has not been said." - Anonymous&lt;/li&gt;
&lt;li&gt;"Unengaged sponsor sinks the ship." - Angela Waner&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Failure and Learning&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"I have witnessed boards that continued to waste money on doomed projects because no one was prepared to admit they were failures, take the blame and switch course. Smaller outfits are more willing to admit mistakes and dump bad ideas." - Luke Johnson&lt;/li&gt;
&lt;li&gt;"If an IT project works the first time, it was a very small and simple project." -- Cornelius Fitchner&lt;/li&gt;
&lt;li&gt;"If an IT project works the first time, it was in your nightly dreams. Time to wake up and get to work." -- Cornelius Fitchner&lt;/li&gt;
&lt;li&gt;"If you always blame others for your mistakes, you will never improve." - Joy Gumz&lt;/li&gt;
&lt;li&gt;"If you have never recommended canceling a project, you haven’t been an effective project manager." -- Woody Williams&lt;/li&gt;
&lt;li&gt;"In NASA, we never punish error. We only punish the concealment of error." - Al Siepert&lt;/li&gt;
&lt;li&gt;"In poorly run projects, problems can go undetected until the project fails. It’s like the drip … drip … drip of an leaky underground pipe. Money is being lost, but you don’t see it until there is an explosion." - Joy Gumz&lt;/li&gt;
&lt;li&gt;"It is better to know some of the questions than all of the answers." - James Thurber&lt;/li&gt;
&lt;li&gt;"It’s not enough that we do our best; sometimes we have to do what’s required." -- Winston Churchill&lt;/li&gt;
&lt;li&gt;"Know when to cut your losses if necessary. Don’t let your desire to succeed be the enemy of good judgment. If Napoleon had left Moscow immediately, he may have returned with a salvageable army." -- Jerry Manas&lt;/li&gt;
&lt;li&gt;"No major project is ever installed on time, within budget, with the same staff that started it." -- Edwards, Butler, Hill and Russell&lt;/li&gt;
&lt;li&gt;"Skills can be learned while experience must be earned." - Joy Gumz&lt;/li&gt;
&lt;li&gt;"What we learn from lessons learned is that we don?t learn from lessons learned." - T. Block&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plans and Planning&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"A good plan can help with risk analyses but it will never guarantee the smooth running of the project." -- Bentley and Borman&lt;/li&gt;
&lt;li&gt;"A project without a critical path is like a ship without a rudder." - D. Meyer&lt;/li&gt;
&lt;li&gt;"A well-constructed project management workshop should give people a solid foundation to build on." -- Bentley and Borman&lt;/li&gt;
&lt;li&gt;"For a project plan to be effective it must equally address the parameters of ‘activity time’ and ‘activity logic’. This logical relationship is required to model the effect schedule variance will have down stream in the project." -- Rory Burke&lt;/li&gt;
&lt;li&gt;"Good judgment comes from experience, and experience comes from bad judgment." -- Fred Brooks&lt;/li&gt;
&lt;li&gt;"Plans are only good intentions unless they immediately degenerate into hard work." -- Peter Drucker&lt;/li&gt;
&lt;li&gt;"Plans are worthless, but planning is invaluable." -- Peter Drucker&lt;/li&gt;
&lt;li&gt;"Running a project without a WBS is like going to a strange land without a roadmap." - J. Phillips&lt;/li&gt;
&lt;li&gt;"Things which matter most must never be at the mercy of things which matter least." -- Goethe&lt;/li&gt;
&lt;li&gt;"This ad hoc approach to project management - coupled as it frequently is, with an on-the-job training philosophy - is pervasive. It is also pernicious." - Jack Meredith&lt;/li&gt;
&lt;li&gt;"Unless commitment is made, there are only promises and hopes … but no plans." -- Peter Drucker&lt;/li&gt;
&lt;li&gt;"What is truth today may be falsehood tomorrow. Never confuse your plan with truth." -- Woody Williams&lt;/li&gt;
&lt;li&gt;"When the territory and the map disagree, believe the territory." - Swiss Army Manual&lt;/li&gt;
&lt;li&gt;"You can’t keep it all in your head. Project control tools are an absolute necessity for the control of large projects." -- Louis Fried&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Process&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"An intelligent person armed with a checklist is no substitute for experience." - Joy Gumz&lt;/li&gt;
&lt;li&gt;"At times, project managers seem to forget that many of the conventional forms, charts, and tables that they must fill out are intended to serve as aids, not punishments." - Mantel, Meredith, Shafer, and Sutton&lt;/li&gt;
&lt;li&gt;"Before anything can be repeatable or reusable, it must be usable." -- Woody Williams&lt;/li&gt;
&lt;li&gt;"Do not repeat the tactics which have gained you one victory, but let your methods be regulated by the infinite variety of circumstances." -- Sun Tzu&lt;/li&gt;
&lt;li&gt;"If you can’t describe what you are doing as a process, you don’t know what you’re doing." - W. Edwards Deming&lt;/li&gt;
&lt;li&gt;"It is not a question of how well each process works; the question is how well they all work together." - Lloyd Dobyns and Clare Crawford-Mason&lt;/li&gt;
&lt;li&gt;"Process for process sake is not good for goodness sake." - Lynn A. Edmark&lt;/li&gt;
&lt;li&gt;"You can only elevate individual performance by elevating that of the entire system." - W. Edwards Deming&lt;/li&gt;
&lt;li&gt;Project Cycle&lt;/li&gt;
&lt;li&gt;"A project is complete when it starts working for you, rather than you working for it." -- Scott Allen&lt;/li&gt;
&lt;li&gt;"‘Begin at the beginning,’ the King said gravely, ‘and go on till you come to the end; then stop.’" - Lewis Carroll&lt;/li&gt;
&lt;li&gt;"Like organic entities, projects have life cycles. From a slow beginning they progress to a buildup of size, then peak, begin a decline, and finally must be terminated. (Also, like other organic entities, they often resist termination.)" -- Meredith and Mantel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Quality&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"External audits are routine in the financial area. I fail to understand why nonprofits don’t use them more in the vital program area." - E. Stoesz&lt;/li&gt;
&lt;li&gt;"Testing proves the presence of bugs but not their absence." -- Woody Williams&lt;/li&gt;
&lt;li&gt;"The testers won’t break the system but the user who thinks the cd-rom drive as a drinks holder will." -- Cornelius Fitchner&lt;/li&gt;
&lt;li&gt;"There are two types of software : bad software and the next release." -- Cornelius Fitchner&lt;/li&gt;
&lt;li&gt;"When debugging, novices insert corrective code; experts remove defective code." -- Richard Pattis&lt;/li&gt;
&lt;li&gt;"When end users get involved in the final stages of testing, light bulbs go on, and they often have an "aha" moment. Unfortunately, that is often too late." - Frank R. Parth&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Rewards and Recognition&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"Good leaders do not take on all the work themselves; neither do they take all the credit." -- Woody Williams&lt;/li&gt;
&lt;li&gt;"If, on your team, everyone’s input is not encouraged, valued, and welcome, why call it a team?" -- Woody Williams&lt;/li&gt;
&lt;li&gt;"Lavish credit on anyone and everyone who helped you the least bit." -- Tom Peters&lt;/li&gt;
&lt;li&gt;"Rewards and motivation are an oil change for project engines. Do it regularly and often." -- Woody Williams&lt;/li&gt;
&lt;li&gt;"True motivation comes from achievement, personal development, job satisfaction, and recognition." - Frederick Herzberg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Risks and Risk Management&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"Assumption is the mother of all screw-ups." - Wethern’s Law of Suspended Judgement&lt;/li&gt;
&lt;li&gt;"PMs are the most creative pros in the world; we have to figure out everything that could go wrong, before it does." -- Fredrik Haren&lt;/li&gt;
&lt;li&gt;"Project proposals, business cases or cost benefit analyses are probably being massaged (either by underestimating costs or timeframes or by being very optimistic about the benefits) so projects will be approved." -- Bentley and Borman&lt;/li&gt;
&lt;li&gt;"When a risk occurs, with some ingenuity, this may open up an opportunity, and conversely when pursuing an opportunity there will be associated risks. Risks are generally deemed acceptable if the possible gains exceed the possible losses." -- Rory Burke&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Schedule and Time&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"Beware the time-driven project with an artificial deadline." - M. Dobson&lt;/li&gt;
&lt;li&gt;"It is useless to desire more time if you are already wasting what little you have." -- James Allen&lt;/li&gt;
&lt;li&gt;"Projects progress quickly until they become 90% complete; then remain at 90% complete forever." -- Edwards, Butler, Hill and Russell&lt;/li&gt;
&lt;li&gt;"The functional groups should not be allowed to stretch out the project for the sake of improvement, refinement, or the investigation of the most remote potential risk." -- Meredith and Mantel&lt;/li&gt;
&lt;li&gt;"There is nothing more perishable than an airline seat - unless it is time on a project." - Joy Gumz&lt;/li&gt;
&lt;li&gt;"You may con a person into committing to an unreasonable deadline, but you cannot bully them into meeting it." -- Edwards, Butler, Hill, and Russell&lt;/li&gt;
&lt;li&gt;Scope, Deliverables, and Impact&lt;/li&gt;
&lt;li&gt;"Don’t do anything you don’t have to do." -- Louis Fried&lt;/li&gt;
&lt;li&gt;"Make an extensive table of project ‘deliverables’. Label one column ‘as requested’. Create another column labeled ‘could be’. Make each ‘could be’ wild and woolly!" -- Tom Peters&lt;/li&gt;
&lt;li&gt;"My personal philosophy is not to undertake a project unless it is manifestly important and nearly impossible." - Edwin Land&lt;/li&gt;
&lt;li&gt;"Our focus on meaningful projects means serving a useful social purpose while generating high-quality profits." - Masimi Iijima&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Teams and Leaders&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"Any Idiot can point out a problem …. A leader is willing to do something about it! Leaders solve problems!" -- Tony Robbins&lt;/li&gt;
&lt;li&gt;"As has been taught to teachers of the Harvard Business School, the art of asking good questions is often the most important element of managerial tasks." -- Parte Bose&lt;/li&gt;
&lt;li&gt;"Get the right people. Then no matter what all else you might do wrong after that, the people will save you. That’s what management is all about." -- Tom DeMarco&lt;/li&gt;
&lt;li&gt;"If everyone is thinking alike, someone isn’t thinking." -- General George Patton Jr.&lt;/li&gt;
&lt;li&gt;"Innovative efforts should never report to line managers charged with responsibility for ongoing operations. The new project is an infant and will remain one for the foreseeable future, and infants belong in the nursery. The ‘adults’, that is, the executives in charge of existing businesses or products will have neither the time nor understanding for the infant." - Peter Drucker&lt;/li&gt;
&lt;li&gt;"Management is doing things right; leadership is doing the right things." - Peter F. Drucker&lt;/li&gt;
&lt;li&gt;"Most success depends on colleagues, on the team. People at the top have large egos, but you must never say ‘I’: it’s always ‘we’." - Frank Lampl&lt;/li&gt;
&lt;li&gt;"Nobody knows how Honda is organized, except that it uses lots of project teams and is quite flexible." - Kenichi Ommae&lt;/li&gt;
&lt;li&gt;"Some of the most flowery praise you hear on the subject of teams is only hypocrisy. Managers learn to talk a good game about teams even when they’re secretly threatened by the whole concept." -- Tom DeMarco&lt;/li&gt;
&lt;li&gt;"The real problem is what to do with problem solvers after the problem is solved." -- Gay Talese&lt;/li&gt;
&lt;li&gt;"We cannot drive people; we must direct their development. Teach and lead." -- Woody Williams&lt;/li&gt;
&lt;li&gt;"What we are looking for is managers who are awake enough to alter the world as they find it, to make it harmonize with what they and their people are trying to accomplish." -- Tom DeMarco&lt;/li&gt;
&lt;li&gt;"Whatever we do must be in accord with human nature. We cannot drive people; we must direct their development.  The general policy of the past has been to drive; but the era of force must give way to the era of knowledge, and the policy of the future will be to teach and lead, to the advantage of all concerned." - Henry L. Gantt&lt;/li&gt;
&lt;li&gt;"You can’t turn a herd of turtles into a twenty-mule work team." - L. Todryk&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vision&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"All things are created twice; first mentally; then physically.  The key to creativity is to begin with the end in mind, with a vision and a blue print of the desired result." - Stephen Covey&lt;/li&gt;
&lt;li&gt;"Effective leaders help others to understand the necessity of change and to accept a common vision of the desired outcome." - John Kotter&lt;/li&gt;
&lt;li&gt;"Every moment is a golden one for him who has the vision to recognize it as such." - Henry Miller&lt;/li&gt;
&lt;li&gt;"Every person takes the limits of their own field of vision for the limits of the world." - Arthur Schopenhauer&lt;/li&gt;
&lt;li&gt;"First comes thought; then organization of that thought, into ideas and plans; then transformation of those plans into reality. The beginning, as you will observe, is in your imagination." -- Napoleon Hill&lt;/li&gt;
&lt;li&gt;"Good business leaders create a vision, articulate the vision, passionately own the vision, and relentlessly drive it to completion." - Jack Welch&lt;/li&gt;
&lt;li&gt;"He who has a ‘why’ to live for can bear with almost any ‘how’." - Friedrich Nietzsche&lt;/li&gt;
&lt;li&gt;"I think there is something, more important than believing: Action! The world is full of dreamers, there aren’t enough who will move ahead and begin to take concrete steps to actualize their vision." - W. Clement Stone&lt;/li&gt;
&lt;li&gt;"If I have seen farther than others, it is because I was standing on the shoulders of giants." - Isaac Newton&lt;/li&gt;
&lt;li&gt;"Imagination is more important than knowledge." -- Albert Einstein&lt;/li&gt;
&lt;li&gt;"It’s easy to see, hard to foresee." - Benjamin Franklin&lt;/li&gt;
&lt;li&gt;"Keep your dreams alive. Understand to achieve anything requires faith and belief in yourself, vision, hard work, determination, and dedication. Remember all things are possible for those who believe." - Gail Devers&lt;/li&gt;
&lt;li&gt;"People are more inclined to be drawn in if their leader has a compelling vision. Great leaders help people get in touch with their own aspirations and then will help them forge those aspirations into a personal vision." - John Kotter&lt;/li&gt;
&lt;li&gt;"People buy into the leader before they buy into the vision." - John C. Maxwell&lt;/li&gt;
&lt;li&gt;"Vision without action is a dream. Action without vision is simply passing the time. Action with Vision is making a positive difference." - Joel Barker&lt;/li&gt;
&lt;li&gt;"Vision is the art of seeing what is invisible to others." - Jonathan Swift&lt;/li&gt;
&lt;li&gt;"When I dare to be powerful - to use my strength in the service of my vision, then it becomes less and less important whether I am afraid." - Audre Lorde&lt;/li&gt;
&lt;li&gt;"With vision there is no room to be frightened., No reason for intimidation. It’s time to march forward! Let’s be confident and positive!" - Charles R. Swindoll&lt;/li&gt;
&lt;/ul&gt;</content><category term="Quotes"/><category term="quotes"/><category term="project management"/><category term="English"/></entry><entry><title>Rueda Cubana - Salsa Cubana (Casino)</title><link href="https://alecor.net/rueda-cubana-salsa-casino-es.html" rel="alternate"/><published>2023-02-25T00:00:00+00:00</published><updated>2023-04-13T00:00:00+01:00</updated><author><name>djalecor</name></author><id>tag:alecor.net,2023-02-25:/rueda-cubana-salsa-casino-es.html</id><summary type="html">&lt;p&gt;Lista de pasos de salsa cubana para Rueda de Casino.&lt;/p&gt;</summary><content type="html">&lt;ul&gt;
&lt;li&gt;Dile que no&lt;/li&gt;
&lt;li&gt;Dile que si&lt;/li&gt;
&lt;li&gt;Tarro&lt;/li&gt;
&lt;li&gt;Dame&lt;/li&gt;
&lt;li&gt;Una arriba&lt;/li&gt;
&lt;li&gt;Ni pa ti ni pa mi&lt;/li&gt;
&lt;li&gt;Doble play&lt;/li&gt;
&lt;li&gt;Doble play doble&lt;/li&gt;
&lt;li&gt;Enchufa&lt;ul&gt;
&lt;li&gt;Enchufa 0&lt;/li&gt;
&lt;li&gt;Enchufa 8&lt;/li&gt;
&lt;li&gt;Enchufa para arriba&lt;/li&gt;
&lt;li&gt;Enchufa mambo&lt;/li&gt;
&lt;li&gt;Enchufa rumba vacuna&lt;/li&gt;
&lt;li&gt;Enchufa Matrix&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Vacuna&lt;/li&gt;
&lt;li&gt;Echeverria&lt;/li&gt;
&lt;li&gt;Sacala&lt;/li&gt;
&lt;li&gt;Directo&lt;/li&gt;
&lt;li&gt;Rumba&lt;/li&gt;
&lt;li&gt;Mambo&lt;/li&gt;
&lt;li&gt;Cero&lt;/li&gt;
&lt;li&gt;Vacilala&lt;/li&gt;
&lt;li&gt;Prima&lt;/li&gt;
&lt;li&gt;Hermana&lt;/li&gt;
&lt;li&gt;Familia&lt;/li&gt;
&lt;li&gt;Policia&lt;/li&gt;
&lt;li&gt;Policia de mujer&lt;/li&gt;
&lt;li&gt;Principe bueno&lt;/li&gt;
&lt;li&gt;Principe malo&lt;/li&gt;
&lt;li&gt;Festival de Pelota&lt;/li&gt;
&lt;li&gt;84&lt;/li&gt;
&lt;li&gt;Fly&lt;/li&gt;
&lt;li&gt;Fly doble&lt;/li&gt;
&lt;li&gt;Directo con vuelta&lt;/li&gt;
&lt;li&gt;Americano&lt;/li&gt;
&lt;li&gt;Americana&lt;/li&gt;
&lt;li&gt;Americanos&lt;/li&gt;
&lt;li&gt;Camina la rueda&lt;/li&gt;
&lt;li&gt;Hombres pa ti&lt;/li&gt;
&lt;li&gt;Mujeres pa ti&lt;/li&gt;
&lt;li&gt;Hombres al medio&lt;ul&gt;
&lt;li&gt;Derecha&lt;/li&gt;
&lt;li&gt;Izquierda&lt;/li&gt;
&lt;li&gt;33&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Kentucky&lt;/li&gt;
&lt;li&gt;Micaela&lt;/li&gt;
&lt;li&gt;Dame con coca cola&lt;/li&gt;
&lt;li&gt;Enchufa manolin (hombres al medio lado a lado) + con palmas&lt;/li&gt;
&lt;li&gt;Ping pong (clap y hip derecha, clap hip izq, repeat)&lt;/li&gt;
&lt;/ul&gt;</content><category term="Dancing"/><category term="dancing"/><category term="salsa"/><category term="rueda"/><category term="baile"/><category term="Español"/></entry><entry><title>Starting with Docker</title><link href="https://alecor.net/content/2023/02/25/starting-with-docker.html" rel="alternate"/><published>2023-02-25T00:00:00+00:00</published><updated>2023-02-27T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-25:/content/2023/02/25/starting-with-docker.html</id><content type="html">&lt;p&gt;Starting with Docker.&lt;/p&gt;</content><category term="Dev"/><category term="dev"/><category term="software development"/><category term="DevOps"/><category term="starting"/><category term="Docker"/><category term="English"/></entry><entry><title>Starting with Python</title><link href="https://alecor.net/content/2023/02/25/starting-with-python.html" rel="alternate"/><published>2023-02-25T00:00:00+00:00</published><updated>2023-02-27T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-25:/content/2023/02/25/starting-with-python.html</id><summary type="html">&lt;p&gt;Starting with the Python programming language.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Starting with Python.&lt;/p&gt;</content><category term="Tutorial"/><category term="coding"/><category term="python"/><category term="programming"/><category term="learning"/><category term="tutorial"/><category term="English"/></entry><entry><title>Tips for Tech Interviews</title><link href="https://alecor.net/content/2023/02/25/tips-for-tech-interviews.html" rel="alternate"/><published>2023-02-25T00:00:00+00:00</published><updated>2023-04-04T00:00:00+01:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2023-02-25:/content/2023/02/25/tips-for-tech-interviews.html</id><summary type="html">&lt;p&gt;Useful, concise tips, pointers and advice for your next Tech interview. A few more specific for Software Engineering interviews in particular also.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Pointers for the next Tech Interview:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Brush up on technical skills: Tech interviews often involve coding challenges, so it's important to brush up on your technical skills. Review algorithms, data structures, and programming languages you may be tested on.&lt;/li&gt;
&lt;li&gt;Practice coding on a whiteboard or paper: Many tech interviews involve coding on a whiteboard or paper, so it's a good idea to practice coding in this format. This will help you get used to writing code without the aid of an IDE or other tools.&lt;/li&gt;
&lt;li&gt;Show your work: Make sure you show your work as you code. Explain your thought process and the steps you're taking to solve the problem. This will help the interviewer understand your approach and will also give them a chance to guide you if you get stuck.&lt;/li&gt;
&lt;li&gt;Understand the problem: Make sure you understand the problem being asked. Ask clarifying questions if needed, and make sure you're clear on the problem constraints and requirements.&lt;/li&gt;
&lt;li&gt;Be familiar with common data structures and algorithms: Be familiar with common data structures and algorithms such as linked lists, binary trees, sorting algorithms, and search algorithms. Practice implementing these algorithms in code.&lt;/li&gt;
&lt;li&gt;Be prepared for system design questions: Many tech interviews also include system design questions. Be familiar with system architecture concepts such as load balancing, caching, and scalability.&lt;/li&gt;
&lt;li&gt;Be familiar with industry tools and technologies: Be familiar with industry tools and technologies relevant to the job you're applying for. This may include programming languages, databases, frameworks, and APIs.&lt;/li&gt;
&lt;li&gt;Stay up-to-date with industry news and trends: Stay up-to-date with industry news and trends by reading tech blogs, attending conferences, and following thought leaders in the field.&lt;/li&gt;
&lt;li&gt;Be confident, but not overconfident: It's important to be confident in your abilities, but not overconfident. Don't be afraid to ask for help or guidance if needed, and be open to feedback from the interviewer.&lt;/li&gt;
&lt;li&gt;Prepare for behavioral questions: Finally, be prepared for behavioral questions such as "Tell me about a time when you had to work on a difficult project" or "How do you handle conflicts with team members?" These questions are designed to assess your soft skills and how well you work with others.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On a more software engineering oriented interview, here are some pointers:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Listen carefully to the question: Make sure you understand the question being asked. Ask clarifying questions if needed.&lt;/li&gt;
&lt;li&gt;Think out loud: Explain your thought process as you work through the problem. This will help the interviewer understand how you approach problems and will also give them a chance to guide you if you get stuck.&lt;/li&gt;
&lt;li&gt;Use examples: Use real-world examples or draw from your own experience to illustrate your points.&lt;/li&gt;
&lt;li&gt;Be honest: If you don't know the answer to a question, be honest about it. Try to reason through the problem as best you can, and ask for hints or guidance if needed.&lt;/li&gt;
&lt;li&gt;Stay calm: Interviews can be stressful, but try to remain calm and composed. Take deep breaths, stay positive, and focus on the task at hand.&lt;/li&gt;
&lt;li&gt;Write clean, readable code: If the question involves coding, write clean, readable code that is easy to follow. Use proper variable names, comments, and whitespace.&lt;/li&gt;
&lt;li&gt;Test your code: After you've written your code, test it thoroughly. Try to anticipate edge cases and corner cases, and test your code with a variety of inputs.&lt;/li&gt;
&lt;li&gt;Practice: Practice answering interview questions with friends, family, or other job seekers. This will help you feel more comfortable and confident during the actual interview.&lt;/li&gt;
&lt;li&gt;Research the company: Do some research on the company you're interviewing with. Learn about their products, services, and mission, and think about how your skills and experience can contribute to their goals.&lt;/li&gt;
&lt;li&gt;Be yourself: Finally, be yourself. Don't try to be someone you're not. Be honest about your strengths and weaknesses, and let your personality shine through. Companies want to hire people who are not only competent, but also a good fit for their culture and values.&lt;/li&gt;
&lt;/ul&gt;</content><category term="Interviewing"/><category term="interview"/><category term="interviewing"/><category term="tech"/><category term="English"/></entry><entry><title>Starting with docker-compose</title><link href="https://alecor.net/content/2022/02/25/starting-with-docker-compose.html" rel="alternate"/><published>2022-02-25T00:00:00+00:00</published><updated>2022-02-25T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2022-02-25:/content/2022/02/25/starting-with-docker-compose.html</id><summary type="html">&lt;p&gt;Starting with docker-compose by giving an introduction and simple, concise examples.&lt;/p&gt;</summary><content type="html"/><category term="Dev"/><category term="dev"/><category term="software development"/><category term="docker"/><category term="docker-compose"/><category term="DevOps"/><category term="starting"/><category term="English"/></entry><entry><title>Starting with Selenium and Python</title><link href="https://alecor.net/content/2022/02/25/starting-with-selenium-and-python.html" rel="alternate"/><published>2022-02-25T00:00:00+00:00</published><updated>2022-02-25T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2022-02-25:/content/2022/02/25/starting-with-selenium-and-python.html</id><content type="html">&lt;p&gt;Starting with Selenium and Python.&lt;/p&gt;</content><category term="Dev"/><category term="Slug: starting-with-selenium-and-python"/><category term="English"/></entry><entry><title>Design patterns in Python</title><link href="https://alecor.net/content/2020/04/11/design-patterns-in-python.html" rel="alternate"/><published>2020-04-11T00:00:00+01:00</published><updated>2022-03-15T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2020-04-11:/content/2020/04/11/design-patterns-in-python.html</id><summary type="html">&lt;p&gt;Quick, concise introduction on implementation of design patterns in Python, with example code.&lt;/p&gt;</summary><content type="html">&lt;h2&gt;Python Design Patterns&lt;/h2&gt;
&lt;h3&gt;What Is A Design Pattern?&lt;/h3&gt;
&lt;p&gt;Everything starts with the Gang of Four (GOF).&lt;/p&gt;
&lt;p&gt;Design patterns are a common way of solving well known problems. Two main principles are in the bases of the design patterns defined by the GOF:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Program to an interface not an implementation.&lt;/li&gt;
&lt;li&gt;Favor object composition over inheritance.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Let's take a closer look at these two principles from the perspective of Python programmers.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Program to an interface not an implementation&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Think about Duck Typing. In Python we don't like to define interfaces and program classes according these interfaces, but this doesn't mean we don't think about interfaces, in fact with Duck Typing we do that all the time.&lt;/p&gt;
&lt;p&gt;The Duck Typing approach to see how it fits in this paradigm: program to an interface.&lt;/p&gt;
&lt;p&gt;If it looks like a duck and quacks like a duck, it's a duck.&lt;/p&gt;
&lt;p&gt;Don't bother with the nature of the object, we don't have to care what the object is; we just want to know if it's able to do what we need (we are only interested in the interface of the object).&lt;/p&gt;
&lt;p&gt;If the object can quack, let it quack.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;bird&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;quack&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="ne"&gt;AttributeError&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;lol&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The interface for our duck was not defined, we designed the interface instead of the implementation.&lt;/p&gt;
&lt;p&gt;As Alex Martelli points out in his well known presentation about Design Patterns in Python, "Teaching the ducks to type takes a while, but saves you a lot of work afterwards!"&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Favor object composition over inheritance&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That's a Pythonic principle; instead of doing this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;DbObject&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;pass&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;We can do something like this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;User&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;_persist_methods&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;get&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;save&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;delete&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;persister&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_persister&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;persister&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;__getattr__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;attribute&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;attribute&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_persist_methods&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nb"&gt;getattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_persister&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;attribute&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;The advantages are clear. We can restrict what methods of the wrapped class to expose. We can inject the persister instance in runtime, for example, today it's a relational database, but tomorrow it could be anything else, with the interface we need.&lt;/p&gt;
&lt;p&gt;Composition is elegant and natural to Python.&lt;/p&gt;
&lt;h3&gt;Behavioral Patterns&lt;/h3&gt;
&lt;p&gt;Behavioural Patterns involve communication between objects, how objects interact and fulfil a given task. According to GOF principles, there are a total of 11 behavioral patterns in Python: Chain of responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template and Visitor.&lt;/p&gt;
&lt;p&gt;Behavioural patterns deal with inter-object communication, controlling how various objects interact and perform different tasks.&lt;/p&gt;
&lt;h4&gt;Iterator&lt;/h4&gt;
&lt;p&gt;Iterators are built into Python. This is one of the most powerful characteristics of the language. Learn enough about Python iterators and generators and you'll know everything you need about this particular Python pattern.&lt;/p&gt;
&lt;h4&gt;Chain of responsibility&lt;/h4&gt;
&lt;p&gt;This pattern gives us a way to treat a request using different methods, each one addressing a specific part of the request. You know, one of the best principles for good code is the &lt;em&gt;Single Responsibility Principle&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Every piece of code must do one, and only one, thing. This principle is deeply integrated in this design pattern.&lt;/p&gt;
&lt;p&gt;For example, if we want to filter some content we can implement different filters, each one doing one precise and clearly defined type of filtering. These filters could be used to filter offensive words, ads, unsuitable video content, and so on.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;ContentFilter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;filters&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_filters&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;filters&lt;/span&gt; &lt;span class="ow"&gt;is&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_filters&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;filters&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;filter_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;filter_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_filters&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;filter_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;content&lt;/span&gt;

&lt;span class="n"&gt;filter_&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ContentFilter&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
            &lt;span class="n"&gt;offensive_filter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;ads_filter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;porno_video_filter&lt;/span&gt;
        &lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;filtered_content&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;filter&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;filter_&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h4&gt;Command&lt;/h4&gt;
&lt;p&gt;"Patterns are not invented, they are discovered". They exist, we just need to find and put them to use.&lt;/p&gt;
&lt;p&gt;The command pattern is handy in situations when we need to start by preparing what will be executed and then to execute it when needed. The advantage is that encapsulating actions in such a way enables Python developers to add additional functionalities related to the executed actions, such as undo/redo, or keeping a history.&lt;/p&gt;
&lt;p&gt;Let's see what a simple and frequently used example looks like:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;RenameFileCommand&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;from_name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;to_name&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_from&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;from_name&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_to&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;to_name&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_from&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_to&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;undo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;rename&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_to&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_from&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;History&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_commands&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;list&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_commands&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;undo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_commands&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;undo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;history&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;History&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;history&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;RenameFileCommand&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;docs/cv.doc&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;docs/cv-en.doc&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;history&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;RenameFileCommand&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;docs/cv1.doc&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;docs/cv-bg.doc&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="n"&gt;history&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;undo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;history&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;undo&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;h3&gt;Creational Patterns&lt;/h3&gt;
&lt;p&gt;Creational patterns are not commonly used in Python because of the dynamic nature of the language.&lt;/p&gt;
&lt;p&gt;Someone once said that Factory is built into Python. It means that the language itself provides us with all the flexibility we need to create objects in a sufficiently elegant fashion; we rarely need to implement anything on top, like &lt;strong&gt;Singleton&lt;/strong&gt; or &lt;strong&gt;Factory&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;One definition of creational design patterns stated these "design patterns provide a way to create objects while hiding the creation logic, rather than instantiating objects directly using a new operator."&lt;/p&gt;
&lt;p&gt;That pretty much sums up the problem: We don't have a new operator in Python in the same manner as in other languages.&lt;/p&gt;
&lt;p&gt;Nevertheless, let's see how we can implement a few, should we feel we might gain an advantage by using such patterns.&lt;/p&gt;
&lt;h4&gt;Singleton&lt;/h4&gt;
&lt;p&gt;The Singleton pattern is used when we want to guarantee that only one instance of a given class exists during runtime. Do we really need this pattern in Python? Based on my experience, it's easier to simply create one instance intentionally and then use it instead of implementing the Singleton pattern.&lt;/p&gt;
&lt;p&gt;But should you want to implement it, here is some good news: In Python, we can alter the instantiation process (along with virtually anything else).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;Logger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;__new__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="nb"&gt;hasattr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;_logger&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_logger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Logger&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="fm"&gt;__new__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;cls&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_logger&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;In this example, Logger is a Singleton.&lt;/p&gt;
&lt;p&gt;These are the alternatives to using a &lt;strong&gt;Singleton&lt;/strong&gt; in Python:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use a module.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Create one instance somewhere at the top-level of your application, perhaps in the config file.&lt;/p&gt;
&lt;p&gt;Pass the instance to every object that needs it. That's a dependency injection and it's a powerful and easily mastered mechanism.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dependency Injection&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Whether dependency injection is a design pattern is a different discussion, but it's a very good mechanism of implementing loose couplings, and it helps make our application maintainable and extendable. Combine it with Duck Typing and &lt;em&gt;the Force will be with you&lt;/em&gt;. Always.&lt;/p&gt;
&lt;p&gt;Duck? Human? Python does not care. It's flexible.&lt;/p&gt;
&lt;p&gt;It is listed in the creational pattern section here because it deals with the question of when (or even better: where) the object is created. It's created outside. Better to say that the objects are not created at all where we use them, so the dependency is not created where it is consumed. The consumer code receives the externally created object and uses it.&lt;/p&gt;
&lt;p&gt;It's a nice explanation of dependency injection and gives us a good idea of the potential of this particular technique. Basically the answer explains the problem with the following example: Don't get things to drink from the fridge yourself, state a need instead. Tell your parents that you need something to drink with lunch.&lt;/p&gt;
&lt;p&gt;Python offers us all we need to implement that easily. Think about its possible implementation in other languages such as &lt;code&gt;Java&lt;/code&gt; and &lt;code&gt;C#&lt;/code&gt;, and you'll quickly realize the beauty of Python.&lt;/p&gt;
&lt;p&gt;Let's think about a simple example of dependency injection:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;Command&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;authenticate&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;authorize&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;None&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authenticate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;authenticate&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_not_authenticated&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authorize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;authorize&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_not_autorized&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authenticate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authorize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;in_sudo_mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;always_authenticated&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;always_authorized&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Command&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authenticate&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authorize&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;delete_user_action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;We inject the authenticator and authorizer methods in the &lt;strong&gt;Command&lt;/strong&gt; class. All the &lt;strong&gt;Command&lt;/strong&gt; class needs is to execute them successfully without bothering with the implementation details. This way, we may use the &lt;strong&gt;Command&lt;/strong&gt; class with whatever authentication and authorization mechanisms we decide to use at runtime.&lt;/p&gt;
&lt;p&gt;We have shown how to inject dependencies through the constructor, but we can easily inject them by setting directly the object properties, unlocking even more potential:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="n"&gt;command&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Command&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;in_sudo_mode&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authenticate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;always_authenticated&lt;/span&gt;
    &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authorize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;always_authorized&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authenticate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authenticate&lt;/span&gt;
    &lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authorize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authorize&lt;/span&gt;

&lt;span class="n"&gt;command&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;current_user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;delete_user_action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;There is much more to learn about dependency injection; curious people would search for IoC, for example.&lt;/p&gt;
&lt;p&gt;Again, we just demonstrated how implementing this wonderful design pattern in Python is just a matter of using the built-in functionalities of the language.&lt;/p&gt;
&lt;p&gt;Let's not forget what all this means: The dependency injection technique allows for very flexible and easy unit-testing. Imagine an architecture where you can change data storing on-the-fly. For example, mocking a database becomes a trivial task.&lt;/p&gt;
&lt;p&gt;You may also want to research &lt;strong&gt;Prototype&lt;/strong&gt;, &lt;strong&gt;Builder&lt;/strong&gt; and &lt;strong&gt;Factory&lt;/strong&gt; design patterns.&lt;/p&gt;
&lt;h3&gt;Structural Patterns&lt;/h3&gt;
&lt;h4&gt;Facade&lt;/h4&gt;
&lt;p&gt;This may very well be the most famous Python design pattern.&lt;/p&gt;
&lt;p&gt;Imagine you have a system with a considerable number of objects. Every object is offering a rich set of API methods. You can do a lot of things with this system, but how about simplifying the interface? Why not add an interface object exposing a well thought-out subset of all API methods? A Facade!&lt;/p&gt;
&lt;p&gt;Facade is an elegant Python design pattern. It's a perfect way of streamlining the interface.&lt;/p&gt;
&lt;p&gt;Python Facade design pattern example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;Car&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_tyres&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;Tyre&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;front_left&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                       &lt;span class="n"&gt;Tyre&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;front_right&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                       &lt;span class="n"&gt;Tyre&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;rear_left&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
                       &lt;span class="n"&gt;Tyre&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;rear_right&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;),]&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_tank&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;Tank&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;70&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;tyres_pressure&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;tyre&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pressure&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;tyre&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_tyres&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;fuel_level&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_tank&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;level&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;There is no surprise, no tricks, the &lt;code&gt;Car&lt;/code&gt; class is a &lt;strong&gt;Facade&lt;/strong&gt;, and that's all.&lt;/p&gt;
&lt;h4&gt;Adapter&lt;/h4&gt;
&lt;p&gt;If &lt;strong&gt;Facades&lt;/strong&gt; are used for interface simplification, &lt;strong&gt;Adapters&lt;/strong&gt; are all about altering the interface. Like using a cow when the system is expecting a duck.&lt;/p&gt;
&lt;p&gt;Let's say you have a working method for logging information to a given destination. Your method expects the destination to have a &lt;code&gt;write()&lt;/code&gt; method (as every file object has, for example).&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;destination&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;destination&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;[&lt;/span&gt;&lt;span class="si"&gt;{}&lt;/span&gt;&lt;span class="s1"&gt;] - &lt;/span&gt;&lt;span class="si"&gt;{}&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;It is a well written method with dependency injection, which allows for great extensibility. Say you want to log to some UDP socket instead to a file, you know how to open this UDP socket, but the only problem is that the socket object has no &lt;code&gt;write()&lt;/code&gt; method. You need an Adapter!&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;socket&lt;/span&gt;

&lt;span class="k"&gt;class&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nc"&gt;SocketWriter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;object&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="fm"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;ip&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_socket&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;AF_INET&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;SOCK_DGRAM&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_ip&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;ip&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;

    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_socket&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_ip&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;_port&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;destination&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;destination&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;[&lt;/span&gt;&lt;span class="si"&gt;{}&lt;/span&gt;&lt;span class="s1"&gt;] - &lt;/span&gt;&lt;span class="si"&gt;{}&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;datetime&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;now&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt; &lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="n"&gt;upd_logger&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;SocketWriter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;1.2.3.4&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;9999&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;Something happened&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;udp_destination&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;When the adapter pattern it's effectively combined with dependency injection, it gives us huge flexibility. Why alter our well-tested code to support new interfaces when we can just implement an adapter that will translate the new interface to the well known one?&lt;/p&gt;
&lt;p&gt;You should also check out and master bridge and proxy design patterns, due to their similarity to adapter. Think how easy they are to implement in Python, and think about different ways you could use them in your project.&lt;/p&gt;
&lt;h4&gt;Decorator&lt;/h4&gt;
&lt;p&gt;Decorators are really nice, and we already have them integrated into the language. Python simplifies using best practices. It's not that we don't have to be conscious about best practices (and design patterns, in particular), most developers find that in Python best practices are intuitive and second nature, and this is something appreciated by novice and elite developers alike.&lt;/p&gt;
&lt;p&gt;The decorator pattern is about introducing additional functionality and in particular, doing it without using inheritance.&lt;/p&gt;
&lt;p&gt;So, let's check out how we decorate a method without using built-in Python functionality. Here is a straightforward example:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authenticate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="bp"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;authorize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;What is not so good here is that the execute function does much more than executing something. We are not following the single responsibility principle to the letter.&lt;/p&gt;
&lt;p&gt;It would be good to simply:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;We can implement any authorization and authentication functionality in another place, in a decorator, like so:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;autheticated_only&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;decorated&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;check_authenticated&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]):&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;UnauthenticatedError&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;decorated&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;authorized_only&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;decorated&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;check_authorized&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;action&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]):&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;UnauthorizeddError&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;decorated&lt;/span&gt;

&lt;span class="n"&gt;execute&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;authenticated_only&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;execute&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;authorized_only&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Now the &lt;code&gt;execute()&lt;/code&gt; method is:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Simple to read&lt;/li&gt;
&lt;li&gt;Does only one thing (at least when looking at the code)&lt;/li&gt;
&lt;li&gt;Is decorated with authentication&lt;/li&gt;
&lt;li&gt;Is decorated with authorization&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We write the same using Python's integrated decorator syntax:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;autheticated_only&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;decorated&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;check_authenticated&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]):&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;UnauthenticatedError&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;decorated&lt;/span&gt;

&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;authorized_only&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;decorated&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;check_authorized&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;user&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;&amp;#39;action&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;]):&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;method&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="n"&gt;UnauthorizedError&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;decorated&lt;/span&gt;

&lt;span class="nd"&gt;@authorized_only&lt;/span&gt;
&lt;span class="nd"&gt;@authenticated_only&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;execute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;kwargs&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;action&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Python is not limited to functions as decorators. The only requirement is that they must be callables. In Python, it is only necessary to define the &lt;code&gt;__call__(self)&lt;/code&gt; method in a class to make it callable.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Python makes it easy to implement and think about design patterns. Some are intuitive, and others are already embedded and simplified within the language, both syntactically and conceptually.&lt;/p&gt;</content><category term="Dev"/><category term="dev"/><category term="software development"/><category term="python"/><category term="design patterns"/><category term="coding"/><category term="English"/></entry><entry><title>What a software architect should know</title><link href="https://alecor.net/content/2020/04/04/what-a-software-architect-should-know.html" rel="alternate"/><published>2020-04-04T00:00:00+01:00</published><updated>2023-04-04T00:00:00+01:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2020-04-04:/content/2020/04/04/what-a-software-architect-should-know.html</id><summary type="html">&lt;p&gt;The knowledge and understanding expected from a Software Architect.&lt;/p&gt;</summary><content type="html">&lt;p&gt;To succeed as a Software Architect, here are the key areas of knowledge and points to understand:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Understanding of &lt;strong&gt;software development principles&lt;/strong&gt; and &lt;strong&gt;best practices&lt;/strong&gt;: This includes knowledge of software design patterns, data structures, algorithms, and code quality principles. A software architect should have a strong foundation in programming and development to make sound technical decisions and lead a team of developers.&lt;/li&gt;
&lt;li&gt;Understanding of &lt;strong&gt;system architecture principles&lt;/strong&gt;: A software architect should be able to design and plan the overall system architecture, including how different components and systems will interact with each other. This requires knowledge of distributed systems, scalability, reliability, and security.&lt;/li&gt;
&lt;li&gt;Communication and leadership skills: A software architect should be able to communicate effectively with other team members and stakeholders, and lead a team of developers to deliver high-quality software products. They should also be able to work collaboratively with other architects, project managers, and stakeholders.&lt;/li&gt;
&lt;li&gt;Business acumen: A software architect should have a strong understanding of the business goals and objectives of the organization they are working for. This includes knowledge of the industry, market trends, and customer needs.&lt;/li&gt;
&lt;li&gt;Knowledge of &lt;strong&gt;emerging technologies&lt;/strong&gt; and &lt;strong&gt;trends&lt;/strong&gt;: A software architect should stay up-to-date with emerging technologies and trends in the industry, and assess their potential impact on the organization's software systems.&lt;/li&gt;
&lt;li&gt;Experience with &lt;strong&gt;software development&lt;/strong&gt; methodologies: A software architect should have experience working with agile methodologies, including Scrum and Kanban, and be able to apply them to software development projects.&lt;/li&gt;
&lt;li&gt;Experience with &lt;strong&gt;system integration&lt;/strong&gt; and &lt;strong&gt;API design&lt;/strong&gt;: A software architect should have experience designing and implementing system integrations, including developing and documenting APIs.&lt;/li&gt;
&lt;li&gt;Understanding of &lt;strong&gt;cloud computing&lt;/strong&gt; and &lt;strong&gt;virtualization&lt;/strong&gt;: A software architect should have a strong understanding of cloud computing and virtualization technologies, including AWS, Azure, and Google Cloud.&lt;/li&gt;
&lt;li&gt;Knowledge of &lt;strong&gt;database design&lt;/strong&gt; and management: A software architect should have a strong understanding of database design and management principles, including relational databases, NoSQL databases, and data warehousing.&lt;/li&gt;
&lt;li&gt;Understanding of &lt;strong&gt;DevOps&lt;/strong&gt; principles: A software architect should understand the principles of DevOps, including continuous integration and delivery, automated testing, and infrastructure as code.&lt;/li&gt;
&lt;/ul&gt;</content><category term="Dev"/><category term="dev"/><category term="software architecture"/><category term="python"/><category term="libraries"/><category term="software engineering"/><category term="English"/></entry><entry><title>Python libraries we should use more</title><link href="https://alecor.net/content/2020/03/24/python-libraries-we-should-use-more.html" rel="alternate"/><published>2020-03-24T00:00:00+00:00</published><updated>2023-03-24T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2020-03-24:/content/2020/03/24/python-libraries-we-should-use-more.html</id><summary type="html">&lt;p&gt;List of Python libraries we should use more.&lt;/p&gt;</summary><content type="html">&lt;p&gt;A quick list of Python libraries with a brief description which may be very useful for your next Python code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Typer: Typer is a Python library for building CLI applications. It provides a decorator-based interface for defining CLI commands and arguments, and automatically generates help documentation based on the function signatures.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Click: Click is another Python library for building CLI applications. It provides a more traditional interface for defining CLI commands and arguments, and supports features like subcommands, options with multiple values, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;PyAutoGUI: PyAutoGUI is a Python library for automating GUI interactions. It provides functions for simulating mouse and keyboard events, taking screenshots, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tkinter: tkinter is a Python library for building graphical user interfaces (GUIs). It provides a set of widgets and layout managers for building windows and dialogs, and supports various input devices like mouse and keyboard.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Pillow: Pillow is a Python library for working with images. It provides tools for opening, manipulating, and saving images in various file formats, as well as more advanced image processing functions.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;httpx: httpx is a modern, asynchronous HTTP client for Python. It provides a simple and intuitive interface for making HTTP requests, and supports features like HTTP/2, HTTP/3, and WebSockets.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;aiohttp: aiohttp is another asynchronous HTTP client for Python. It is built on top of asyncio and provides a more low-level interface for making HTTP requests, but also supports more advanced features like server-side websockets and HTTP/2.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;fastapi: fastapi is a modern, fast web framework for building APIs with Python. It is built on top of asyncio and provides automatic API documentation and validation, as well as support for various authentication and authorization methods.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;django: django is a popular web framework for building full-stack web applications with Python. It provides a comprehensive set of tools for handling web requests, managing databases, and rendering HTML templates.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;tqdm: tqdm is a Python library for adding progress bars to loops and iterators. It provides a simple and intuitive interface for tracking the progress of long-running computations.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;rich: rich is a Python library for adding color and style to terminal output. It provides a variety of styles and formatting options for adding emphasis and structure to text output.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;SQLAlchemy: SQLAlchemy is a Python library for working with SQL databases. It provides an Object-Relational Mapping (ORM) system that allows Python objects to be mapped to database tables, and provides a high-level SQL abstraction layer for querying databases.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;beautifulsoup: Beautiful Soup is a Python library for parsing HTML and XML documents. It provides a simple interface for navigating, searching, and modifying the parse tree.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;pygame: pygame is a Python library for creating video games and multimedia applications. It provides functionality for displaying graphics, playing sounds and music, handling user input, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;pyinstaller: pyinstaller is a Python library for creating standalone executables from Python scripts. It packages all necessary dependencies and runtime libraries into a single executable file, making it easy to distribute Python applications.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;prefect: prefect is a Python library for building, scheduling, and monitoring data pipelines. It provides a simple and intuitive interface for defining workflows and dependencies, and supports various execution environments like local machines, Kubernetes, and cloud providers.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;attrs: attrs is a Python library for defining classes with explicit attributes. It provides a decorator-based interface for defining class attributes with metadata and default values, and supports various features like validation, conversion, and more.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;joblib: joblib is a Python library for parallel and memory-efficient computing. It provides tools for running CPU-bound and I/O-bound tasks in parallel across multiple cores, and supports various backends like multiprocessing and dask.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;</content><category term="Dev"/><category term="dev"/><category term="software development"/><category term="python"/><category term="libraries"/><category term="English"/></entry><entry><title>Leyes de Murphy</title><link href="https://alecor.net/leyes-de-murphy-es.html" rel="alternate"/><published>2012-04-13T00:00:00+01:00</published><updated>2010-12-05T19:30:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2012-04-13:/leyes-de-murphy-es.html</id><summary type="html">&lt;p&gt;Leyes de Murphy y otras lecturas similares.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Las Leyes de Murphy&lt;/p&gt;
&lt;p&gt;Fragmentos varios.&lt;/p&gt;
&lt;p&gt;Índice de capítulos&lt;/p&gt;
&lt;p&gt;Introducción.&lt;/p&gt;
&lt;p&gt;Murphyología.&lt;/p&gt;
&lt;p&gt;Murphyología aplicada.&lt;/p&gt;
&lt;p&gt;Murphyología avanzada.&lt;/p&gt;
&lt;p&gt;Burocracia, jerarqueología y comiteología.&lt;/p&gt;
&lt;p&gt;Jerarqueología y comiteología.&lt;/p&gt;
&lt;p&gt;Comiteología.&lt;/p&gt;
&lt;p&gt;Arte de dirigir y economurphyología.&lt;/p&gt;
&lt;p&gt;Periciología.&lt;/p&gt;
&lt;p&gt;Periciología avanzada.&lt;/p&gt;
&lt;p&gt;Contabilidología.&lt;/p&gt;
&lt;p&gt;Diseñología.&lt;/p&gt;
&lt;p&gt;Maquinología.&lt;/p&gt;
&lt;p&gt;Investigacionología y academiología.&lt;/p&gt;
&lt;p&gt;Investigacionología avanzada.&lt;/p&gt;
&lt;p&gt;Academiología.&lt;/p&gt;
&lt;p&gt;Murphyología del trabajo y la oficina.&lt;/p&gt;
&lt;p&gt;Sistemántica.&lt;/p&gt;
&lt;p&gt;Murphyología situacional.&lt;/p&gt;
&lt;p&gt;Sociomurphyología (humanismo).&lt;/p&gt;
&lt;p&gt;Murphyología médica.&lt;/p&gt;
&lt;p&gt;Deportivismología-logía.&lt;/p&gt;
&lt;p&gt;Cortesía en carretera.&lt;/p&gt;
&lt;p&gt;Murphyología doméstica.&lt;/p&gt;
&lt;p&gt;Consumidorología y el arte de vender.&lt;/p&gt;
&lt;p&gt;Problemática.&lt;/p&gt;
&lt;p&gt;Cosmomurphyología.&lt;/p&gt;
&lt;p&gt;Metaleyes.&lt;/p&gt;
&lt;p&gt;Introducción.&lt;/p&gt;
&lt;p&gt;¿Nunca ha sonado el teléfono de su casa en el preciso instante en que usted se sentaba en el excusado? ¿Tampoco ha aparecido el autobús que llevaba horas esperando justo cuando se ha encendido un cigarrillo? ¿Nunca ha llovido a cántaros, precisamente el día que había llevado el coche a lavar, ni ha dejado de llover nada más comprar un paraguas? Es posible que usted se diera cuenta en ese momento de que se estaba tramando algo, que existía un principio universal más allá de su comprensión y que estaba muerto de rabia por que le pusieran un nombre. También, es posible que usted deseara recurrir a la Ley de Murphy, el Principio de Peter o la Ley de la Gravitación Selectiva, si es que había oído hablar de ellas, sólo para darse cuenta de que se le había olvidado el nombre exacto.&lt;/p&gt;
&lt;p&gt;Aquí tenemos un pequeño compendio de referencias, que parten del juicio y de la sabiduría de nuestros tecnólogos, burócratas, humanistas y observadores antisociales más deliciosamente dementes. Lo han elaborado y nos lo presentan con la finalidad de proporcionarnos un ligero “alivio kármico”.&lt;/p&gt;
&lt;p&gt;A lo largo de la historia, los eruditos y los sabios nos han divertido con las leyes del Universo, las estructuras sutiles aunque inmutables que rigen el orden cósmico. Hemos recibido las Leyes Morales de los religiosos; las Leyes del Karma de los místicos; Las Leyes de la Lógica de los racionalistas y las Leyes de la Estética de los artistas. Ahora es el turno de los tecnólogos y de agudizar nuestro oído colectivo.&lt;/p&gt;
&lt;p&gt;Murphyología.&lt;/p&gt;
&lt;p&gt;LEY DE MURPHY.&lt;/p&gt;
&lt;p&gt;Si algo puede salir mal, saldrá mal.
Corolarios.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Nada es tan fácil como parece.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Todo lleva más tiempo del que usted piensa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si existe la posibilidad de que varias cosas vayan mal, la que cause más perjuicios será la única que vaya mal.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si usted intuye que hay cuatro posibilidades de que una gestión vaya mal y las evita, al momento aparecerá espontáneamente una quinta posibilidad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando las cosas se dejan a su aire, suelen ir de mal en peor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En cuanto se ponga a hacer algo, se dará cuenta de que hay otra cosa que debería haber hecho antes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cualquier solución entraña nuevos problemas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Es inútil hacer cualquier cosa a prueba de tontos, porque los tontos son muy ingeniosos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La naturaleza siempre está de parte de la imperfección oculta.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La madre Naturaleza es una lagartona.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;FILOSOFÍA DE MURPHY.&lt;/p&gt;
&lt;p&gt;Sonría. Mañana puede ser peor.&lt;/p&gt;
&lt;p&gt;COMENTARIO DE O'TOOLE SOBRE LA LEY DE MURPHY.&lt;/p&gt;
&lt;p&gt;Murphy era un optimista.&lt;/p&gt;
&lt;p&gt;POSTULADO DE BOLING.&lt;/p&gt;
&lt;p&gt;Si se encuentra bien, no se preocupe. Se le pasará.&lt;/p&gt;
&lt;p&gt;PRIMERA LEY DE CHISHOLM.&lt;/p&gt;
&lt;p&gt;Cuando las cosas vayan bien, algo habrá que haga que vayan mal.
Corolarios.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuando parece que ya nada puede ir peor, empeora.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando le parezca que las cosas van mejor, es que se le ha pasado algo por alto.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE LA IDEA GENIAL.&lt;/p&gt;
&lt;p&gt;Cuando a usted se le ocurra la solución ideal, alguien habrá resuelto ya el problema.&lt;/p&gt;
&lt;p&gt;LEY DE LA MENTIRA.&lt;/p&gt;
&lt;p&gt;No importa la frecuencia con que se demuestre que una mentira es falsa. Siempre habrá cierto porcentaje de gente que crea que es verdad.&lt;/p&gt;
&lt;p&gt;LEY DE KRANSKE.&lt;/p&gt;
&lt;p&gt;Guárdese del día en que no tenga nada que lamentar.
Corolarios.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si usted explica algo con tanta claridad que nadie lo pueda malinterpretar, no se preocupe, alguien lo hará.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si usted hace algo y está seguro de que contará con la aprobación de todo el mundo, a alguien le disgustará.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Los métodos para conseguir más fácilmente el objetivo no suelen funcionar.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PRIMERA LEY DE FINAGLE.&lt;/p&gt;
&lt;p&gt;Si un experimento funciona, es que algo ha ido mal.&lt;/p&gt;
&lt;p&gt;SEGUNDA LEY DE FINAGLE.&lt;/p&gt;
&lt;p&gt;No importa cuál sea el resultado previsto. Siempre habrá alguien impaciente por:&lt;/p&gt;
&lt;p&gt;malinterpretarlo;
imitarlo, o
creer que ha sido a causa de su teoría favorita.&lt;/p&gt;
&lt;p&gt;TERCERA LEY DE FINAGLE.&lt;/p&gt;
&lt;p&gt;En cualquier grupo de datos, la cifra que evidentemente es correcta, sin ninguna necesidad de comprobación, es la errónea.
Corolarios.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Si le pide ayuda a alguien, no sabrá ver el error. 2. Cualquiera que eche un vistazo, sin que usted se lo pida, lo verá inmediatamente.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;CUARTA LEY DE FINAGLE.&lt;/p&gt;
&lt;p&gt;Si un trabajo se ha atascado, todo lo que haga para arreglarlo sólo conseguirá empeorarlo.&lt;/p&gt;
&lt;p&gt;REGLAS DE FINAGLE.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Para estudiar mejor un asunto, entiéndalo en profundidad antes de empezar. 2. Lleve siempre un registro de datos; así demostrará que ha estado trabajando. 3. Primero dibuje curvas y después elabore el texto. 4. En caso de duda, que suene muy convincente. 5. Los experimentos deben ser análogos, es decir, todos deben fallar de la misma manera. 6. No crea en los milagros, confíe en ellos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PRIMERA LEY DE SODD.&lt;/p&gt;
&lt;p&gt;Cuando una persona emprende una tarea, la intervención inconsciente de otra presencia (animada o inanimada) desbaratará sus planes. Sin embargo, algunas tareas se pueden terminar debido a que esa presencia que interviene también está realizando una tarea y, evidentemente, también está expuesta a que usted intervenga.&lt;/p&gt;
&lt;p&gt;SEGUNDA LEY DE SODD.&lt;/p&gt;
&lt;p&gt;Antes o después, puede tener la más completa seguridad de que se producirán las circunstancias más desfavorables.
Corolario.&lt;/p&gt;
&lt;p&gt;Todo sistema se debe diseñar para que se pueda oponer a las circunstancias más desfavorables.
PARADOJA DE MURPHY.&lt;/p&gt;
&lt;p&gt;Siempre es más fácil hacerlo de la forma más difícil.&lt;/p&gt;
&lt;p&gt;LEY DE MURPHY SOBRE LA TERMODINÁMICA.&lt;/p&gt;
&lt;p&gt;Todo empeora a elevadas presiones.&lt;/p&gt;
&lt;p&gt;LEY DE PUDDER.&lt;/p&gt;
&lt;p&gt;Todo lo que empieza bien, acaba mal.
Todo lo que empieza mal, acaba de puta pena.&lt;/p&gt;
&lt;p&gt;POSTULADO DE TYLCZAK SOBRE LA PROBABILIDAD.&lt;/p&gt;
&lt;p&gt;Los sucesos fortuitos tienden a suceder todos juntos.
Murphyología aplicada.&lt;/p&gt;
&lt;p&gt;LEY DE PATTISON SOBRE LA ELECTRÓNICA.&lt;/p&gt;
&lt;p&gt;Si los cables se pueden conectar de dos o más formas diferentes, la primera de ellas es la que funde los plomos.
LEYES UNIVERSALES SOBRE LOS MÉTODOS RECOMENDADOS POR EL COMITÉ DE LA SOCIEDAD DE LOS INGENIEROS FILÓSOFOS PARA INGENIEROS INGENUOS.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;En cualquier cálculo, si se tiene que colar un error, se colará.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cualquier error de cualquier cálculo, será el que más daños produzca.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En cualquier fórmula, las constantes (especialmente las que se han sacado de libros de Ingeniería) se deben considerar como variables.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La mejor aproximación a las condiciones de funcionamiento en el laboratorio, ni siquiera se aproximará a las condiciones reales de funcionamiento.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La dimensión más importante de cualquier plano o proyecto es la que tiene más posibilidades de que la pasemos por alto.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si sólo existe una oferta para un determinado proyecto, lo más seguro es que el precio no sea razonable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si una instalación de prueba funciona perfectamente, las unidades que produzca no funcionarán en absoluto. 8&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;.Todas las promesas sobre los plazos de entrega deben multiplicarse por un factor igual a 2,0..&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Los cambios importantes de diseño se solicitarán cuando el proceso de fabricación esté a punto de terminar.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;10.Las piezas que no se puedan montar más que en un cierto orden, se podrán intercambiar.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Las piezas intercambiables, por el contrario, demostrarán que no lo son.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las especificaciones del fabricante sobre el rendimiento se deben multiplicar por un factor igual a 0,5 13.  Las afirmaciones del personal del Departamento de Ventas sobre el rendimiento se deben multiplicar por un factor igual a 0,25.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las instrucciones de instalación y funcionamiento que vienen con el aparato, las habrán tirado los del Departamento de Recepción de Mercancías.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La pieza que precise algún ajuste será la menos accesible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las condiciones de servicio, tal y como vienen en las instrucciones, se quedarán cortas rápidamente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si hay más de una persona a la que se le pueda echar la culpa de un error de cálculo, la culpa no será de nadie.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Aparatos idénticos que han tenido el mismo comportamiento en las pruebas, no se comportarán igual en la práctica.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si, en la práctica existe un factor de seguridad que ha determinado la experiencia, siempre habrá algún idiota ingenioso que lo sobrepase.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las cláusulas de garantía expiran al pago de la factura.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PRINCIPIO DE HEISENBERG SOBRE LA INCERTIDUMBRE.&lt;/p&gt;
&lt;p&gt;La localización de todos los objetos no se puede conocer de forma simultánea.
Corolario.&lt;/p&gt;
&lt;p&gt;Si encuentra un objeto que estaba perdido, desaparecerá otro.
OBSERVACION DE OIENS.&lt;/p&gt;
&lt;p&gt;La forma más rápida de encontrar algo es empezar a buscar otra cosa.
. LEY DE BOOB.&lt;/p&gt;
&lt;p&gt;Las cosas siempre se encuentran en el último sitio en que se mira.
FENÓMENOS TELEFÓNICOS DE FRANK.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si tiene lápiz, no tiene papel.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si tiene papel, no tiene lápiz.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si tiene las dos cosas, nadie le deja un recado.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE PARK SOBRE PRIMAS DE SEGUROS E IMPUESTOS.&lt;/p&gt;
&lt;p&gt;Todo lo que sube, permanece arriba.
PRIMERA LEY SOBRE LA DINÁMICA DEL DINERO.&lt;/p&gt;
&lt;p&gt;Un ingreso imprevisto siempre viene acompañado de un gasto inesperado por la misma cantidad.
LEY DE HEID SOBRE LAS COLAS.&lt;/p&gt;
&lt;p&gt;Llegue a la hora que llegue, siempre habrá más gente en la cola.
LEY DE JOHNSON Y LAIRD.&lt;/p&gt;
&lt;p&gt;Los dolores de muelas empiezan siempre los viernes por la noche.
Corolario.&lt;/p&gt;
&lt;p&gt;Si usted es el jefe, los dolores de muelas de sus empleados empiezan siempre los lunes por la mañana.
LEY DE PARSON SOBRE LOS PASAPORTES.&lt;/p&gt;
&lt;p&gt;Nadie es tan feo como en la foto del pasaporte.
Murphyología avanzada.&lt;/p&gt;
&lt;p&gt;LEY DE MURPHY.&lt;/p&gt;
&lt;p&gt;Si algo tiene que salir mal, saldrá mal.
SÍNTESIS DE SCHNATTERLY SOBRE LOS COROLARIOS.&lt;/p&gt;
&lt;p&gt;Si algo no puede salir mal, saldrá mal.
PARADOJA DE SIVERMAN.&lt;/p&gt;
&lt;p&gt;Si la Ley de Murphy tiene que salir mal, saldrá mal.
EXTENSIÓN A LA LEY DE MURPHY.&lt;/p&gt;
&lt;p&gt;Si una serie de sucesos puede salir mal, saldrá mal en la peor secuencia posible.
COROLARIO DE FARNDICK DEL QUINTO COROLARIO.&lt;/p&gt;
&lt;p&gt;Después de que las cosas hayan ido de mal en peor, el ciclo se repetirá.
EXTENSIÓN DE GATTUSO DE LA LEY DE MURPHY.&lt;/p&gt;
&lt;p&gt;Nada es tan malo nunca como para qué no pueda empeorar.
LEY DE MURPHY SOBRE EL GOBIERNO.&lt;/p&gt;
&lt;p&gt;Si algo puede ir mal, lo hará por triplicado.
ANEXO A LA LEY DE MURPHY.&lt;/p&gt;
&lt;p&gt;En términos matemáticos precisos, 1 + 1 = 2, donde el símbolo “=” significa “rara vez, si acaso”.
REGLA DE FAHNSTOCK SOBRE EL FRACASO.&lt;/p&gt;
&lt;p&gt;Si no atina a la primera, destruya todas las evidencias de que lo ha intentado.
CITA EQUIVOCADA DE GROSSMAN SOBRE H.L. MENCKEN.&lt;/p&gt;
&lt;p&gt;Los problemas complejos, tienen soluciones erróneas sencillas y fáciles de entender.
LEY DE FLUGG.&lt;/p&gt;
&lt;p&gt;Cuando se necesita tocar madera es cuando nos damos cuenta de que el mundo está compuesto de aluminio y vinilo.
LEY DE IMBESI SOBRE LA CONSERVACIÓN DE LA SUCIEDAD.&lt;/p&gt;
&lt;p&gt;Para limpiar algo, hay que ensuciar otra cosa.
Extensión de Freeman.&lt;/p&gt;
&lt;p&gt;Pero se puede ensuciar todo sin limpiar nada.
LEY AVANZADA DE LA BÚSQUEDA.&lt;/p&gt;
&lt;p&gt;El primer sitio donde se debe empezar a buscar algo, es en el último donde se esperaría encontrarlo.
LEY DE MARYANN.&lt;/p&gt;
&lt;p&gt;Siempre se encuentra lo que no se busca.
LEY INAPLICABLE.&lt;/p&gt;
&lt;p&gt;Lavar el coche para que llueva no suele dar resultado.
LEY DE NAESER.&lt;/p&gt;
&lt;p&gt;Puede hacer algo a prueba de tontos, pero no puede hacer nada a prueba de ese maldito tonto.
LEY DE DUDE SOBRE LA DUALIDAD.&lt;/p&gt;
&lt;p&gt;De dos acontecimientos posibles, sólo ocurrirá el no deseado.
LEY DE HANE.&lt;/p&gt;
&lt;p&gt;No existen límites para que las cosas vayan mal.
LEY DE PERRUSEL.&lt;/p&gt;
&lt;p&gt;No hay tarea tan simple que no pueda hacerse mal.
LEYES DE LACKLAND.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Nunca sea el primero.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nunca sea el último.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nunca se presente voluntario para nada.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PRINCIPIO DE PAROUZZI.&lt;/p&gt;
&lt;p&gt;Dado un mal comienzo, los problemas se incrementarán en proporción exponencial.
EL FACTOR CHI.&lt;/p&gt;
&lt;p&gt;Cantidad = 1 / Calidad ; o la cantidad es inversamente proporcional a la calidad.
LEY DE KEN.&lt;/p&gt;
&lt;p&gt;Una partícula que se desplaza, buscará el ojo más próximo.
LEY DE SCHOPENHAUER SOBRE LA ENTROPÍA.&lt;/p&gt;
&lt;p&gt;Si se añade una cucharada de vino a un barril lleno de deshechos, se obtienen deshechos. Si se añade una cucharada de deshechos a un barril lleno de vino, se obtienen deshechos.
LEY DE ALLEN.&lt;/p&gt;
&lt;p&gt;Casi siempre es más fácil entrar que salir.
LEY DE FROTHINGHAM.&lt;/p&gt;
&lt;p&gt;La urgencia es algo inversamente proporcional a su importancia.
PRINCIPIO DE ROCKEFELLER.&lt;/p&gt;
&lt;p&gt;Nunca haga nada que sólo le gustaría que le vieran haciéndolo una vez muerto.
LEY DE YOUNG SOBRE LA MOVILIDAD INANIMADA.&lt;/p&gt;
&lt;p&gt;Todos los objetos inanimados, pueden moverse lo suficiente como para estorbar.
Burocracia, jerarqueología y comiteología.&lt;/p&gt;
&lt;p&gt;PRINCIPIO DE LA BUROCRACIA&lt;/p&gt;
&lt;p&gt;Sólo la burocracia puede combatir a la burocracia.
Corolario&lt;/p&gt;
&lt;p&gt;Nunca se deje atrapar entre dos burocracias.
LEY DE YOUNG.&lt;/p&gt;
&lt;p&gt;La madera muerta es la que sostiene al árbol.
Corolario.&lt;/p&gt;
&lt;p&gt;Que esté en pie, no significa que no esté muerto.
PRINCIPIO DE HOFFSTEDT SOBRE EL EMPLEO.&lt;/p&gt;
&lt;p&gt;La confusión crea empleo.
LEY DE SOPER.&lt;/p&gt;
&lt;p&gt;Cualquier burocracia que se reorganiza para incrementar la eficiencia, inmediatamente se hace indistinguible de su predecesora.
TEORÍA DE OWEN SOBRE LA DESVIACIÓN ORGANIZATIVA.&lt;/p&gt;
&lt;p&gt;Toda organización tiene asignado un cierto número de plazas para que las ocupen personas no cualificadas.
Corolario.&lt;/p&gt;
&lt;p&gt;Cuando una de esas personas no cualificadas deja el puesto, se contrata a otra.
TEORÍA DE GOIA.&lt;/p&gt;
&lt;p&gt;La persona menos cualificada es la que da más opiniones.
OBSERVACIÓN SOBRE LA DIRECCIÓN.&lt;/p&gt;
&lt;p&gt;La ineficacia y la estupidez del personal corresponde a la ineficacia y estupidez de los directivos.
LEY DE AMAND SOBRE DIRECCIÓN.&lt;/p&gt;
&lt;p&gt;Todo el mundo está siempre en otro sitio.
EL PELIGRO DEL GENIO.&lt;/p&gt;
&lt;p&gt;Cualquier jefe despedirá a un empleado que siempre tenga razón.
LEMA DE LIPPMAN.&lt;/p&gt;
&lt;p&gt;La gente se especializa siempre en el campo que menos conoce.
LEY DE HUTCHINS.&lt;/p&gt;
&lt;p&gt;No se puede hablar más que un hombre que no sabe de lo que está hablando.
COSAS EN LAS QUE SE PUEDE CONFIAR EN UNA CRISIS.&lt;/p&gt;
&lt;p&gt;Marketing dice que sí.
Finanzas dice que no.
El Departamento Legal tiene que revisarlo.
El Departamento de Personal está preocupado.
El Departamento de Planificación está frenético.
Ingeniería pasa de todo.
Fabricación quiere más espacio.
Dirección quiere responsabilizar a alguien.
LEY DE FAHNSTOCK SOBRE EL DEBATE.&lt;/p&gt;
&lt;p&gt;Todo tema que merezca la pena debatir, merece la pena evitarlo por completo.
LEYES DE MITCHELL SOBRE LA COMITEOLOGÍA.&lt;/p&gt;
&lt;p&gt;Cualquier problema sencillo se puede convertir en insoluble si se celebran suficientes reuniones para discutirlo.
Una vez que se presente al comité la forma de echar a perder el proyecto, será aceptada invariablemente como la solución más acertada.
Después de que esa solución haya hecho fracasar el proyecto, todos los que la apoyaron inicialmente dirán: “¡Ojalá hubiera expresado entonces mis dudas!”.
COMENTARIO DE KENNEDY SOBRE LOS COMITÉS.&lt;/p&gt;
&lt;p&gt;Un comité lo constituyen doce hombres haciendo el trabajo de uno.
COMENTARIO DE KIRBY SOBRE LOS COMITÉS.&lt;/p&gt;
&lt;p&gt;Un comité es la única forma de vida que tiene doce estómagos, pero carece de cerebro.
PRINCIPIO DE COLLINS SOBRE LAS CONFERENCIAS.&lt;/p&gt;
&lt;p&gt;El orador con voz más monótona siempre habla después de comer.
LEY DE LA DINÁMICA DE LOS COMITÉS.&lt;/p&gt;
&lt;p&gt;Todos los que más se oponen a formar parte de un comité, son elegidos presidentes.
LEY DE MATILDA SOBRE LA FORMACIÓN DE UN SUBCOMITÉ.&lt;/p&gt;
&lt;p&gt;Si abandona la sala, saldrá elegido.
LEY DE JACOBSON.&lt;/p&gt;
&lt;p&gt;Cuanto menos trabajo tiene una organización, con más frecuencia se reorganiza.
Jerarqueología y comiteología.&lt;/p&gt;
&lt;p&gt;POSTULADO DE PERKIN.&lt;/p&gt;
&lt;p&gt;Cuanto más grandes son, más daño hacen.
POSTULADO DE HARRISON.&lt;/p&gt;
&lt;p&gt;Para cualquier acción, existe una crítica igual y antagónica.
REGLA DE ROGER.&lt;/p&gt;
&lt;p&gt;Se concederá autorización para un proyecto únicamente cuando ninguno de los que lo autorizan pueda ser culpado si el proyecto fracasa, pero todos se lo puedan atribuir si resulta un éxito.
LEY DE CONWAY.&lt;/p&gt;
&lt;p&gt;En una organización, siempre hay una persona que sabe qué es lo que se cuece. Hay que despedirla inmediatamente.
TEOREMA DE BACHMAN SOBRE LA INEVITABILIDAD.&lt;/p&gt;
&lt;p&gt;Cuanto mayor sea el coste para poner en práctica un plan, menor probabilidad existe de que se abandone, aunque posteriormente se demuestre que no era conveniente.
Corolario.&lt;/p&gt;
&lt;p&gt;Cuanto más alto sea el nivel de prestigio que un plan proporcionará a las personas que lo han ideado, menor será la posibilidad de abandonarlo.
PRIMERA REGLA DE LA INFERIORIDAD SUPERIOR.&lt;/p&gt;
&lt;p&gt;No permita que sus superiores se den cuenta de que usted es superior a ellos.
LEY DE WHISTLER.&lt;/p&gt;
&lt;p&gt;Nunca se sabe quien tiene razón, pero siempre se sabe quien manda.
LEYES DE SPENCER SOBRE LOS DATOS.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cualquiera puede tomar una decisión si se le proporcionan datos suficientes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Un buen gerente puede tomar una decisión sin datos suficientes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Un gerente perfecto puede trabajar en la más completa ignorancia.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE DREW SOBRE LAS PRÁCTICAS PROFESIONALES.&lt;/p&gt;
&lt;p&gt;El cliente que paga menos es el que más se queja.
LEY DE COHN.&lt;/p&gt;
&lt;p&gt;En cualquier burocracia, el trabajo de oficina aumentará a medida que usted pase cada vez más tiempo redactando informes sobre lo poco que hace. La estabilidad se alcanzará sólo cuando usted se pase todo el tiempo redactando informes sobre lo que, en absoluto, está haciendo.
LEY DE KUSHER.&lt;/p&gt;
&lt;p&gt;Las probabilidades de que alguien haga algo son inversamente proporcionales al número de personas que pueden hacerlo en su lugar.
PRINCIPIO DE PFEIFER.&lt;/p&gt;
&lt;p&gt;Nunca tome una decisión si puede lograr que la tome otro en su lugar.
Corolario.&lt;/p&gt;
&lt;p&gt;Nadie lleva un registro de las decisiones que usted pudo haber tomado, pero se evitaron. Todo el mundo lleva un registro de las que tomó y resultaron un desastre.
LEY DE McDONALD.&lt;/p&gt;
&lt;p&gt;Es difícil que le cambien de departamento cuando, en realidad, sobra.
LEY DE LA DISPERSIÓN PROBABLE.&lt;/p&gt;
&lt;p&gt;Cualquier cosa que choque contra el ventilador no se distribuirá uniformemente.
PRINCIPIO DE LUPOSCHAINSKI DE “DESE PRISA Y ESPERE”.&lt;/p&gt;
&lt;p&gt;Si llega pronto, lo suspenderán.
Si se esfuerza demasiado por llegar a tiempo, tendrá que esperar.
Si llega con retraso, será demasiado tarde.
AXIOMA DE GOURD&lt;/p&gt;
&lt;p&gt;Una reunión es una situación en la que se levantan actas y se pierden horas.
PRIMERA LEY DE LAS REUNIONES DE NEGOCIOS.&lt;/p&gt;
&lt;p&gt;La rotura de la punta del lápiz es directamente proporcional a la importancia de las notas que haya que tomar.
SEGUNDA LEY DE LAS REUNIONES DE NEGOCIOS.&lt;/p&gt;
&lt;p&gt;Si hay dos maneras de pronunciar el nombre de una persona, usted lo pronunciará de la que no es.
LEY DE WELLINGTON SOBRE LA AUTORIDAD.&lt;/p&gt;
&lt;p&gt;La crema sube a la superficie.
La mierda, también.
PRINCIPIO DE PETER.&lt;/p&gt;
&lt;p&gt;En cualquier jerarquía, todo empleado tiene a incrementar su nivel de incompetencia.
Corolario.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Con el tiempo, todos los puestos tienden a que los ocupe un empleado incompetente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El trabajo lo realiza un empleado que todavía no ha alcanzado el nivel ideal de incompetencia.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;TEOREMA DE PETER.&lt;/p&gt;
&lt;p&gt;Incompetencia + Incompetencia = Incompetencia.
PLACEBO DE PETER.&lt;/p&gt;
&lt;p&gt;Un gramo de imagen equivale a un kilo de rendimiento.
AXIOMA DE VAIL.&lt;/p&gt;
&lt;p&gt;En cualquier empresa humana, el trabajo busca el nivel jerárquico inferior.
LEY DE IMHOFF.&lt;/p&gt;
&lt;p&gt;La organización de cualquier burocracia se parece mucho a un tanque séptico. Los trozos más grandes, siempre suben a la superficie.
PRIMERA LEY DE PARKINSON.&lt;/p&gt;
&lt;p&gt;Cualquier trabajo se expande hasta agotar el tiempo destinado a que se haga. El incremento de la importancia de lo que hay que hacer es directamente proporcional al tiempo que se tarda en hacerlo.
SEGUNDA LEY DE PARKINSON.&lt;/p&gt;
&lt;p&gt;Los gastos aumentan hasta cubrir los ingresos.
TERCERA LEY DE PARKINSON.&lt;/p&gt;
&lt;p&gt;Expansión implica complejidad y la complejidad deterioro.
CUARTA LEY DE PARKINSON.&lt;/p&gt;
&lt;p&gt;El número de personas que integran un grupo de trabajo tiende a aumentar independientemente del trabajo que haya que realizar.
QUINTA LEY DE PARKINSON.&lt;/p&gt;
&lt;p&gt;Si existe una manera de retrasar una decisión importante, una burocracia eficaz, pública o privada, la encontrará.
AXIOMAS DE PARKINSON.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Un funcionario quiere multiplicar el número de sus subordinados, no el de sus rivales.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Los funcionarios se ayudan a la hora de hacer el trabajo.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE CORNUELLE.&lt;/p&gt;
&lt;p&gt;La autoridad tiende a asignar tareas a los menos capaces de realizarlas.
PRIMERA LEY DE LOS ARTISTAS FREELANCE.&lt;/p&gt;
&lt;p&gt;Los encargos urgentísimos, pero muy bien pagados, sólo llegan cuando usted ha aceptado un encargo urgentísimo, pero mal pagado.
SEGUNDA LEY DE LOS ARTISTAS FREELANCE.&lt;/p&gt;
&lt;p&gt;Tendrá que entregar el mismo día todos los trabajos urgentísimos.
TERCERA LEY DE LOS ARTISTAS FREELANCE.&lt;/p&gt;
&lt;p&gt;El trabajo urgentísimo con el que pasó la noche trabajando, no lo necesitan hasta pasado mañana.
LAS DIEZ REGLAS DE SPARK PARA EL DIRECTOR DE PROYECTOS.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Esfuércese por tener siempre un aspecto tremendamente importante.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Intente que le vean con gente importante.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hable con autoridad, pero sólo de hechos evidentes y comprobados.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No entre en discusiones. Pero, si le acorralan, haga una pregunta intranscendente y eche el cuerpo hacia atrás con una sonrisa satisfecha. Cuando su oponente intente entender que es lo que pasa, aproveche para cambiar de tema.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Escuche absorto como los demás discuten el problema. Ataque a un asunto trivial y apabulle a los otros.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si un subordinado le hace una pregunta inoportuna, mírele como si se hubiera vuelto loco. Cuando mire al suelo, diríjale a él la misma pregunta con otras palabras.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consiga un encargo importante, pero no se convierta en el centro de atención.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando salga de la oficina, camine con rapidez. Esto reduce al mínimo las posibilidades de preguntas de los subordinados y superiores.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mantenga cerrada siempre la puerta de su despacho. Esto hará que sus visitantes se pongan a la defensiva o piensen que usted está en una reunión importante.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;De siempre verbalmente todas las órdenes, que no queden pruebas escritas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;DILEMA DEL TRABAJADOR.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Haga lo que haga, nunca será suficiente.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lo que no haga, siempre será más importante que lo que haga.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE COMUNICACIONES.&lt;/p&gt;
&lt;p&gt;El inevitable resultado de la mejor y más amplia comunicación ente los distintos niveles jerárquicos es una zona cada vez más vasta de falta de entendimiento.
AXIOMAS DEL DIRECTOR.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Piense antes de actuar: ese dinero no es suyo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La buena dirección es la expresión de una buena idea.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ningún ejecutivo dedica ningún esfuerzo a comprobar que se ha equivocado.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si para justificar una acción necesita cálculos muy complicados, no la emprenda.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;MÁXIMA DE MATCH.&lt;/p&gt;
&lt;p&gt;Un tonto en una posición elevada es como un hombre en la cima de una montaña. Al segundo, todo le parece pequeño y él le parece pequeño a todo el mundo.
LEYES DE MENCKEN.&lt;/p&gt;
&lt;p&gt;El que puede, lo hace.
El que no puede, se dedica a la enseñanza.
Extensión de Martin.&lt;/p&gt;
&lt;p&gt;Los que no pueden dedicarse a la enseñanza, son funcionarios.
LEY DE JONES.&lt;/p&gt;
&lt;p&gt;El hombre capaz de sonreír cuando las cosas van mal, ya ha pensado a quien le echará la culpa.
LEY DE SOCIOECONOMÍA.&lt;/p&gt;
&lt;p&gt;En un sistema jerárquico, el aumento de la retribución por un trabajo dado es inversamente proporcional a la dificultad del mismo y lo desagradable que sea.
LAMENTO DE HARRIS.&lt;/p&gt;
&lt;p&gt;Los buenos puestos de trabajo ya están ocupados.
LEY DE PUTT.&lt;/p&gt;
&lt;p&gt;El mundo de la tecnología está dominado por dos tipos de personas:&lt;/p&gt;
&lt;p&gt;Los que entienden lo que no dirigen.
Los que dirigen lo que no entienden.
Comiteología.&lt;/p&gt;
&lt;p&gt;LEY DE OLD Y KAHN.&lt;/p&gt;
&lt;p&gt;La eficiencia de un comité es inversamente proporcional al número de participantes que haya y al tiempo que se invierta en las deliberaciones.
LEY DE SHANAHAN.&lt;/p&gt;
&lt;p&gt;La duración de una reunión es directamente proporcional al número de participantes.
LEY DE LA TRIVIALIDAD.&lt;/p&gt;
&lt;p&gt;El tiempo dedicado a discutir cualquier punto del orden del día es inversamente proporcional a la suma implicada.
LEYES DE ISSAWI SOBRE LA COMITEODINÁMICA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Comitas comitatum, omnia comitas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuanto menos le guste participar en comités, más probable es que le insistan en que su presencia es indispensable.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE HENDRICKSON.&lt;/p&gt;
&lt;p&gt;Si a causa de un problema se convocan muchas reuniones, las reuniones llegarán a ser más importantes que el problema.
REGLA DE McNAUGHTON.&lt;/p&gt;
&lt;p&gt;En un sistema burocrático, cualquier discusión que merezca la pena emprender, se debe poder expresar con una frase simple que se convertirá en verdad evidente una vez que se haya pronunciado.
LEY DE TRUMAN.&lt;/p&gt;
&lt;p&gt;Si no puede convencerlos, confúndalos.
PRIMERA LEY DEL DEBATE.&lt;/p&gt;
&lt;p&gt;No discuta nunca con un tonto. Puede que la gente no aprecie la diferencia.
LEYES DE LA INDECISIÓN.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;La indecisión acorta la tarea y traslada a otra persona (el jefe que puso la fecha límite) la responsabilidad de que se concluya.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reduce la ansiedad, ya que disminuye la calidad esperada del proyecto por tener que hacerlo en tan poco tiempo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se gana prestigio ante los demás, y ante uno mismo, ya que se supone que la importancia del trabajo justifica la tensión nerviosa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Generalmente, también se puede conseguir evitar las interrupciones (por ejemplo, que le asignen nuevas tareas) para que el trabajador, evidentemente, agobiado se pueda concentrar en lo que está haciendo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La indecisión evita el aburrimiento. Nunca se tiene la sensación de que no hay nada importante que hacer.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se puede eliminar la tarea, en el caso de que deje de hacer falta antes de que esté concluida.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE SWIPPLE SOBRE EL ORDEN.&lt;/p&gt;
&lt;p&gt;El que grita más, tiene la palabra.
LEYES DE BOREN.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuando tenga dudas, hable entre dientes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando tenga problemas, delegue.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando sea el jefe, medite.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE PATTON.&lt;/p&gt;
&lt;p&gt;Un buen plan es mejor hoy que un plan perfecto mañana.
Arte de dirigir y economurphyología.&lt;/p&gt;
&lt;p&gt;LEY DE LIEBERMAN.&lt;/p&gt;
&lt;p&gt;Todo el mundo miente pero no importa, porque nadie escucha.
LEY DE LA MENTIRA.&lt;/p&gt;
&lt;p&gt;No importa la frecuencia con que se demuestre que una mentira es falsa. Siempre habrá algunas personas que crean que es verdad.
LEY DE LA SALCHICHA.&lt;/p&gt;
&lt;p&gt;Hay personas a quienes les gustan las salchichas y respetan las leyes y es debido a que no han visto como se elaboran ninguna de las dos cosas.
LEY DE LA ACCIÓN LEGISLATIVA.&lt;/p&gt;
&lt;p&gt;El tiempo necesario para que el Parlamento apruebe una ley es inversamente proporcional al número de grupos que la apoyan.
LOS DOS PRINCIPIOS POLÍTICOS DE TODD.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Le digan lo que le digan, no es toda la verdad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Hablen de lo que hablen, hablan de dinero.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE KAMIN.&lt;/p&gt;
&lt;p&gt;Si intenta predecir y pronosticar los movimientos macroeconómicos de la legislación económica con la ayuda de un político, no deje que le despiste lo que dice; fíjese en lo que hace.
PRINCIPIO DE WATERGATE.&lt;/p&gt;
&lt;p&gt;Siempre que se informa sobre la corrupción del Gobierno, se hace en tiempo pasado.
LEY DE EVANS.&lt;/p&gt;
&lt;p&gt;Si consigue mantener la calma cuando todo el mundo pierde la cabeza, entonces es que no se entera del problema.
REGLA DE DEFACTUALIZACIÓN.&lt;/p&gt;
&lt;p&gt;En las burocracias, la información se deteriora en sentido ascendente.
LEY DE LAS PIRAÑAS.&lt;/p&gt;
&lt;p&gt;Cuando los gastos escandalosos se dividen en porciones pequeñas, el público no tendrá intereses suficientes en ninguno de los capítulos como para reclamar.
Corolario.&lt;/p&gt;
&lt;p&gt;Un número suficiente de pirañas se puede comer el erario público.
REGLA DE GOOD PARA RELACIONARSE CON LAS BUROCRACIAS.&lt;/p&gt;
&lt;p&gt;Cuando las soluciones de un departamento de Gobierno no se ajusten a su problema, usted modifica el problema, no la solución.
PRINCIPIO DE HEISENBERG SOBRE LA INVERSIÓN.&lt;/p&gt;
&lt;p&gt;Se puede saber hacia donde se dirige el mercado, pero lo que no hay forma de saber es que dirección tomará después de invertir.
OBSERVACION DE HORNGREN.&lt;/p&gt;
&lt;p&gt;Entre los economistas, con frecuencia, el mundo real es un caso especial.
FÓRMULA DE GLYME DEL ÉXITO.&lt;/p&gt;
&lt;p&gt;El secreto del éxito es la sinceridad. En cuanto pueda fingirla, lo habrá conseguido.
REGLAS DE HELGA.&lt;/p&gt;
&lt;p&gt;Diga no y luego negocie.
REGLAS DE BROWN DEL LIDERAZGO.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Para tener éxito en política, a veces tendrá que pasar sobre sus principios.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La mejor manera de tener éxito en política es encontrar una multitud que se dirija a alguna parte y colocarse al frente de ella.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;REGLA DE LA LEY.&lt;/p&gt;
&lt;p&gt;Si los hechos están en su contra, invoque a la ley.
Si la ley está en su contra, insista en los hechos.
Si los hechos y la ley están en su contra, grite como un poseso.
LEY DE MILES.&lt;/p&gt;
&lt;p&gt;Si posición depende de donde se siente.
EXTENSIÓN DE FIBLEY A LA LEY DE MILES.&lt;/p&gt;
&lt;p&gt;El lugar donde se siente, depende de a quien conozca.
REGLA DE LA POLÍTICA.&lt;/p&gt;
&lt;p&gt;Cuando un político tiene una idea, generalmente está equivocado.
REGLA DE SHERMAN SOBRE LAS CONFERENCIAS DE PRENSA.&lt;/p&gt;
&lt;p&gt;La explicación de un desastre, la dará un sustituto.
LEY DE MILLER.&lt;/p&gt;
&lt;p&gt;Las excepciones confirman la regla… y hunden el presupuesto.
LEY DE BUCKWALD.&lt;/p&gt;
&lt;p&gt;A medida que la economía mejora, todo lo demás empeora.
PRIMERA LEY DE LA POLÍTICA.&lt;/p&gt;
&lt;p&gt;Sea fiel a los que no están en el poder.
LEY DE LOWE.&lt;/p&gt;
&lt;p&gt;El éxito siempre tiene lugar en privado y el fracaso a la luz pública. Cuando sucede en política, se aplica la ley contraria.
Periciología.&lt;/p&gt;
&lt;p&gt;REGLA DE HOROWITZ.&lt;/p&gt;
&lt;p&gt;La sabiduría consiste en saber cuándo se debe evitar la perfección.
LEY DE DE NEVERS SOBRE LA COMPLEJIDAD.&lt;/p&gt;
&lt;p&gt;Los temas más sencillos son aquellos de los que no sabe nada.
TEOREMA DE CHRISTIE-DAVIS.&lt;/p&gt;
&lt;p&gt;Si sus datos son falsos, pero su lógica es perfecta, entonces sus conclusiones serán inevitablemente falsas. Por tanto, si comete errores con su lógica, tiene al menos una probabilidad aleatoria de llegar a la conclusión correcta.
LEY DE DE NEVERS SOBRE EL DEBATE.&lt;/p&gt;
&lt;p&gt;Dos monólogos no constituyen un diálogo.
LEY DE HIRAM.&lt;/p&gt;
&lt;p&gt;Si se consultan suficientes expertos, se puede confirmar cualquier opinión.
LEY DE JORDAN.&lt;/p&gt;
&lt;p&gt;Un informante que nunca proporciona información equivocada es demasiado anormal como para confiar en él.
LEY PERDIDA DE DE NEVERS.&lt;/p&gt;
&lt;p&gt;Nunca especule sobre aquello que pueda saber con certeza.
CLAVE DEL ÉXITO SEGÚN ELY.&lt;/p&gt;
&lt;p&gt;Cree una necesidad y satisfágala.
REGLA DE BRALEK SOBRE EL ÉXITO.&lt;/p&gt;
&lt;p&gt;Confíe sólo en aquellos que perderían tanto como usted si las cosas fueran mal.
LEY DE MALEK.&lt;/p&gt;
&lt;p&gt;Cualquier idea simple se puede expresar de la manera más compleja que exista.
COROLARIO DE WEINBERGER.&lt;/p&gt;
&lt;p&gt;Un experto es la persona que evita los errores pequeños mientras sigue su avance inexorable hacia la gran falacia.
PRIMERA LEY DE CLARKE.&lt;/p&gt;
&lt;p&gt;Cuando un famoso, aunque anciano científico, asegura que algo es posible, suele tener razón. Cuando afirma que algo es imposible, suele estar equivocado.
SEGUNDA LEY DE CLARKE.&lt;/p&gt;
&lt;p&gt;La única forma de descubrir los límites de lo posible es traspasarlos en dirección a lo imposible.
LEY DE CLARKE SOBRE LAS IDEAS REVOLUCIONARIAS.&lt;/p&gt;
&lt;p&gt;Todo campo revolucionario – ciencia, política, arte o cualquier otro – produce tres formas de reacción. Se pueden resumir en tres frases:
1. “Es imposible, no me haga perder el tiempo.”&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;“Es posible, pero no merece la pena.”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“Siempre dije que era una idea magnífica.”&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;REGLA DE LOS GRANDES.&lt;/p&gt;
&lt;p&gt;Cuando alguien a quien usted admira y respeta parezca ensimismado y pensativo, lo más probable es que esté pensando en la cena.
TERCERA LEY DE CLARKE.&lt;/p&gt;
&lt;p&gt;Cualquier tecnología avanzada es indistinguible de la magia.
LEY DE RUNAMOK.&lt;/p&gt;
&lt;p&gt;Hay cuatro clases de personas:
1. Las que se sientan en silencio y no hacen nada.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Las que hablan de sentarse en silencio y no hacer nada.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las que hacen cosas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las que hablan de hacer cosas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE SEGAL.&lt;/p&gt;
&lt;p&gt;Un hombre con un reloj sabe qué hora es.
Un hombre con dos relojes nunca está seguro.&lt;/p&gt;
&lt;p&gt;LEY DE MILLER.&lt;/p&gt;
&lt;p&gt;No se puede saber la profundidad de un charco hasta que no se ha metido el pie.
LEY DE WEILER.&lt;/p&gt;
&lt;p&gt;Nada hay imposible para el hombre si no lo tiene que hacer él mismo.
PRIMERA LEY DE WEINBERGER.&lt;/p&gt;
&lt;p&gt;Si los constructores edificaran de la misma manera que los programadores elaboran los programas, el primer pájaro carpintero que pasara volando, acabaría con la civilización.
Periciología avanzada.&lt;/p&gt;
&lt;p&gt;REGLA DE MARS.&lt;/p&gt;
&lt;p&gt;Un experto es cualquiera que no sea de la ciudad.
DEFINICIÓN DE WEBWER.&lt;/p&gt;
&lt;p&gt;Un experto es aquel que sabe cada vez más sobre menos cosas, hasta que sabe absolutamente todo sobre nada.
REGLA DE WARREN.&lt;/p&gt;
&lt;p&gt;Si quiere identificar al experto, escoja al que predice que el trabajo durará más tiempo y costará más.
REGLA DE WINGER.&lt;/p&gt;
&lt;p&gt;Si se sienta en su mesa durante quince minutos, usted acaba de convertirse en un experto.
LEY DE SCHROEDER.&lt;/p&gt;
&lt;p&gt;La indecisión es el fundamento de la flexibilidad.
Corolario.&lt;/p&gt;
&lt;p&gt;Cree problemas para los que sólo usted tenga la solución.
MÁXIMA DE MATZ.&lt;/p&gt;
&lt;p&gt;Una conclusión es el punto en el que usted se cansó de pensar.
REGLA DE FAGIN SOBRE LA PREDICCIÓN DEL PASADO.&lt;/p&gt;
&lt;p&gt;La percepción retrospectiva es una ciencia exacta.
REGLA FUNDAMENTAL DE LA HISTORIA.&lt;/p&gt;
&lt;p&gt;No es que la Historia se repita, es que los historiadores se copian unos a otros.
LEYES DE DUNLAP SOBRE LA FÍSICA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Un hecho es una opinión consolidada.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Los hechos pueden debilitarse en condiciones extremas de calor y presión&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La verdad es elástica.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;MÁXIMA DE MERKIN.&lt;/p&gt;
&lt;p&gt;En caso de duda, anuncie que la tendencia se mantendrá.
SOLUCION DE HALGREN.&lt;/p&gt;
&lt;p&gt;Cuando tenga problemas, ofúsquese.
TEORIA DE HAWKINS SOBRE EL PROGRESO.&lt;/p&gt;
&lt;p&gt;El progreso no consiste en sustituir una teoría equivocada por otra correcta, sino en sustituir una teoría falsa por otra más sutilmente errónea.
LEY DE MEYER.&lt;/p&gt;
&lt;p&gt;Es tarea fácil hacer que las cosas parezcan complejas, pero es complicado hacerlas sencillas.
LEY DE HLADE.&lt;/p&gt;
&lt;p&gt;Si tiene una tarea difícil, confíesela a un hombre vago. El encontrará la forma más fácil de hacerla.
LEY DE HUNT.&lt;/p&gt;
&lt;p&gt;Cualquier gran idea tiene una desventaja mayor o igual a la grandeza de la misma.
NAVAJA DE HANLON.&lt;/p&gt;
&lt;p&gt;No le atribuya nunca a la malicia lo que puede explicar la estupidez.
Contabilidología.&lt;/p&gt;
&lt;p&gt;FALACIA DE FROTHINGHAM.&lt;/p&gt;
&lt;p&gt;El tiempo es oro.
LEY DE CRANE.&lt;/p&gt;
&lt;p&gt;No hay comidas gratuitas, tal cosa no existe.
LEY DE WIKER.&lt;/p&gt;
&lt;p&gt;El Gobierno se expande hasta absorber los beneficios y todo lo que caiga.
LEY DE TUCILLE SOBRE LA REALIDAD.&lt;/p&gt;
&lt;p&gt;La industria siempre avanza para rellenar un vacío económico.
REGLA DE WESTHEIMER.&lt;/p&gt;
&lt;p&gt;Cálculo del tiempo que se necesita para llevar a cabo una tarea:&lt;/p&gt;
&lt;p&gt;Calcule el tiempo que usted considere necesario.
Multiplíquelo por dos.
Cambie a la unidad de medida inmediatamente superior.
Así, le asignaremos dos días a un trabajo de media hora.&lt;/p&gt;
&lt;p&gt;LEY DE GRESHAM.&lt;/p&gt;
&lt;p&gt;Los asuntos triviales se solucionan con rapidez. Los asuntos importantes no se resuelven nunca.
LEY DE GRAY SOBRE LA PROGRAMACIÓN.&lt;/p&gt;
&lt;p&gt;Se espera que se terminen n+1 tareas triviales en el mismo tiempo en que se concluirían n tareas.
REFUTACIÓN DE LOGG A LA LEY DE GRAY.&lt;/p&gt;
&lt;p&gt;Para concluir n+1 tareas triviales hace falta el doble de tiempo que para n.
LA REGLA 90/90 DE PROGRAMACIÓN DE PROYECTOS.&lt;/p&gt;
&lt;p&gt;El primer 90 por 100 del trabajo requiere el 10 por 100 del tiempo y el último 10 por 100, el 90 por 100 restante.
REGLA DE WEINBERGER.&lt;/p&gt;
&lt;p&gt;El progreso se lleva a cabo un viernes sí y otro no.
PRINCIPIO DE LOS PEDIDOS.&lt;/p&gt;
&lt;p&gt;Los materiales necesarios para el experimento de ayer no se deben encargar después de mañana al mediodía.
LEY DE KEOPS&lt;/p&gt;
&lt;p&gt;No hay nada que se termine en los plazos previstos y que no se salga del presupuesto.
EXTENSIÓN DEL PRINCIPIO DE EPSTEIN-HEISENBERG.&lt;/p&gt;
&lt;p&gt;En una órbita R &amp;amp; D, sólo se pueden definir simultáneamente dos de los tres parámetros existentes. Estos parámetros son: la tarea, el tiempo y los recursos ($).&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si se sabe cual es la tarea que se tiene que realizar y hay un tiempo límite para llevarla a cabo, entonces no se puede tener idea de lo que costará.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si el tiempo y los recursos están claramente definidos, entonces es imposible saber cual es la parte de la tarea que se terminará.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si la tarea está bien definida y se ha calculado cuidadosamente la cantidad de dinero necesaria para realizarla, entonces no se puede predecir cuando se finalizará, en caso de que se termine.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE PARETO (LEY 20/80).&lt;/p&gt;
&lt;p&gt;El 20 por 100 de los clientes justifica el 80 por 100 del volumen de ventas.
El 20 por 100 de los componentes justifica el 80 por 100 del coste, etc.
PRINCIPIO DE O'BRIEN (TEORÍA DE LOS 357,73$).&lt;/p&gt;
&lt;p&gt;Los auditores siempre rechazan cualquier cuenta de gastos cuyo total sea divisible por 5 o por 10.
OBSERVACIÓN DE ISSAWI SOBRE EL CONSUMO DE PAPEL.&lt;/p&gt;
&lt;p&gt;Todo sistema cuenta con su propia forma de consumir enormes cantidades de papel. En los sistemas socialistas hay que rellenar por cuadruplicado impresos kilométricos. En las sociedades capitalistas se colocan inmensas vallas publicitarias y se envuelve todo con cuatro capas de cartulina.
COROLARIO COLATERAL DE JOHN.&lt;/p&gt;
&lt;p&gt;Para conseguir un crédito, lo primero que tiene que hacer es demostrar que no lo necesita.
LEY DE BRIEN.&lt;/p&gt;
&lt;p&gt;En algún momento del ciclo vital de, virtualmente, todas las organizaciones, desaparece su capacidad para tener éxito, a pesar de seguir siendo ellas mismas.
LEY DE LAS INSTITUCIONES.&lt;/p&gt;
&lt;p&gt;La magnificencia de la recepción es inversamente proporcional a la solvencia de la empresa.
LEY DE PAULG.&lt;/p&gt;
&lt;p&gt;En EE.UU., lo importante no es lo que cuesta un artículo, sino lo que usted se ahorra.
LEY DE JUHANI.&lt;/p&gt;
&lt;p&gt;El acuerdo siempre será más costoso que cualquiera de los puntos que se pacten.
Diseñología.&lt;/p&gt;
&lt;p&gt;PROFECÍA DE POULSEN.&lt;/p&gt;
&lt;p&gt;Si se usa cualquier cosa hasta su máxima capacidad, se rompe.
LEY DE MAYNE.&lt;/p&gt;
&lt;p&gt;Nadie nota los errores grandes.
PRINCIPIO DE INERCIA DEL DISEÑO.&lt;/p&gt;
&lt;p&gt;Al principio, todos los cambios parecen horribles.
LEY DE WRIGHT SOBRE LA CALIDAD.&lt;/p&gt;
&lt;p&gt;La calidad es inversamente proporcional al tiempo que queda para terminar el proyecto.
LEY DE LA PLANIFICACIÓN CORPORATIVA.&lt;/p&gt;
&lt;p&gt;Cualquier cosa que se pueda cambiar, se cambiará hasta que no quede tiempo para cambiar nada
. LEY DE BEACH.&lt;/p&gt;
&lt;p&gt;No hay dos piezas idénticas que se parezcan.
LEY DE EDWARDS SOBRE EL ESFUERZO/TIEMPO.&lt;/p&gt;
&lt;p&gt;Esfuerzo x Tiempo = Constante.
Dado un tiempo inicial grande para hacer algo, el esfuerzo inicial será pequeño.
A medida que el tiempo se aproxima a cero, el esfuerzo tiende a infinito.
Corolario.&lt;/p&gt;
&lt;p&gt;Si no fuera por el último minuto, no se haría nada.
TEORÍA DE McPHERSON SOBRE LA ENTROPÍA.&lt;/p&gt;
&lt;p&gt;Se requiere menos energía para sacar un objeto de su sitio que para volverlo a colocar.
POSTULADO DE BITTON PARA LA ELECTRÓNICA.&lt;/p&gt;
&lt;p&gt;Si lo entiende, es que se ha quedado antiguo.
LEY DE MANUBAY PARA LOS PROGRAMADORES.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si funciona la modificación de un programador a un programa ya existente, es probable que no sea lo que quieren los usuarios.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Los usuarios no saben realmente lo que quieren, pero saben con certeza lo que no quieren.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;AXIOMA DE JOSE.&lt;/p&gt;
&lt;p&gt;No hay nada tan temporal como lo que se denomina permanente.
Corolario.&lt;/p&gt;
&lt;p&gt;No hay nada tan permanente como lo que se denomina temporal.
LEY DE RAP SOBRE LA REPRODUCCIÓN INANIMADA.&lt;/p&gt;
&lt;p&gt;Si usted desarma una cosa, la vuelve a montar y repite el proceso varias veces, al final tendrá dos cosas.
PRIMERA LEY DE LAS REVISIONES.&lt;/p&gt;
&lt;p&gt;Al diseñador se le notificará que es necesario modificar el diseño después – y sólo después – de que haya terminado los planos. (A menudo, es denominada como la Ley de “¡Y nos lo dice ahora!”.)
Corolario.&lt;/p&gt;
&lt;p&gt;En ciertos casos en los que se advierte que hay una forma correcta evidente y una errónea, se aconseja elegir la equivocada para acelerar la revisión posterior.
ECUACIONES DE SNAFU.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;En cualquier problema con n ecuaciones, siempre habrá n+1 incógnitas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La información más necesaria, siempre será la más inaccesible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando haya agotado todas las posibilidades y fracase, aparecerá una solución simple y evidente que estaba delante de sus narices.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Lo malo siempre viene a oleadas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;CONSTANTE DE SKINNER (FACTOR CHANCHULLO DE FLANNAGAN).&lt;/p&gt;
&lt;p&gt;Es esa cantidad que cuando se multiplica, divide, suma o resta del resultado que usted ha obtenido, le proporciona el resultado que debería haber obtenido.
LEYES DE PROGRAMACIÓN DE ORDENADORES.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cualquier programa, cuando funciona, es que se ha quedado antiguo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cualquier programa cuesta más caro y necesita más tiempo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si un programa es útil, habrá que cambiarlo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si un programa es inútil, habrá que demostrarlo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cualquier programa se expandirá hasta ocupar todos los recursos del ordenador.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La complejidad de un programa aumenta hasta superar la capacidad del programador que debe revisarlo.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;REGLAS DE GILB SOBRE LA NO FIABILIDAD.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Los ordenadores no son fiables, pero los seres humanos lo son menos aún.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cualquier sistema que dependa de la fiabilidad humana, no es fiable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La variedad de los errores indetectables es infinita en contraste con los errores detectables que son, por definición, limitados.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las inversiones en fiabilidad aumentarán hasta que superen el coste probable de los errores o hasta que alguien insista en que el trabajo se haga bien.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE BROOK.&lt;/p&gt;
&lt;p&gt;Si añade mano de obra a un proyecto que va retrasado, se retrasa todavía más.
LEY DE LUBARSKY SOBRE LA ENTOMOLOGÍA CIBERNÉTICA.&lt;/p&gt;
&lt;p&gt;Siempre queda algún virus.
PRINCIPIO DE SHAW.&lt;/p&gt;
&lt;p&gt;Construya un sistema que pueda utilizar hasta un tonto y sólo lo querrán utilizar los tontos.
Maquinología.&lt;/p&gt;
&lt;p&gt;PRINCIPIO DE POLLYANNA SOBRE LA IBM.&lt;/p&gt;
&lt;p&gt;Las máquinas deben funcionar y las personas pensar.
LEY DE LA PERVERSIDAD DE LA NATURALEZA.&lt;/p&gt;
&lt;p&gt;No se puede determinar a priori en que lado de la tostada hay que poner la mantequilla.
LEY DE LA GRAVEDAD SELECTIVA.&lt;/p&gt;
&lt;p&gt;Todos los objetos se caen al suelo de tal forma que causen más desperfectos.
Corolario de Jenning.&lt;/p&gt;
&lt;p&gt;La probabilidad de que la tostada caiga con la mantequilla hacia abajo es directamente proporcional al precio de la alfombra.
Corolario de Klipstein.&lt;/p&gt;
&lt;p&gt;La pieza más delicada será la que se caiga antes.
LEY DE SPRINKEL.&lt;/p&gt;
&lt;p&gt;Las cosas siempre caen en ángulo recto.
LEY DE LA MOLESTIA.&lt;/p&gt;
&lt;p&gt;Cuando esté haciendo un trabajo manual, si guarda una herramienta porque está seguro de que no la utilizará más, la volverá a necesitar en breves momentos.
LEY DE ANTHONY SOBRE EL TALLER.&lt;/p&gt;
&lt;p&gt;Cualquier herramienta, cuando se suelta, rueda hasta el rincón más inaccesible de todo el taller.
Corolario.&lt;/p&gt;
&lt;p&gt;Cuando vaya a recogerla, tropezará con otras herramientas y se hará polvo los dedos de los pies.
PRINCIPIO DE LOS REPUESTOS.&lt;/p&gt;
&lt;p&gt;Los repuestos son más o menos accesibles y esto es directamente proporcional a su tamaño e inversamente proporcional a la urgencia de terminar el trabajo.
LEY DE PAUL.&lt;/p&gt;
&lt;p&gt;Es imposible caerse del suelo.
LEY DE JOHNSON.&lt;/p&gt;
&lt;p&gt;Si un artilugio mecánico falla, lo hará en el momento más inoportuno.
LEY DE WATSON.&lt;/p&gt;
&lt;p&gt;La fiabilidad de la máquina es inversamente proporcional al número y a la categoría de las personas que la manejan.
LEY DE WYSZKOWSKI.&lt;/p&gt;
&lt;p&gt;Cualquier cosa puede llegar a funcionar si se tiene en las manos el tiempo suficiente.
LEY DE SATTINGER.&lt;/p&gt;
&lt;p&gt;Funcionaría mejor si la enchufara.
LEY DE LOWERY.&lt;/p&gt;
&lt;p&gt;Si se traba, fuércela; si se rompe, es que había que cambiarla de todas maneras.
REGLA DEL TOCADISCOS.&lt;/p&gt;
&lt;p&gt;El accesorio más caro es el que menos se utiliza.
LEY DE SCHMIDT.&lt;/p&gt;
&lt;p&gt;Si manosea una cosa durante mucho tiempo, se romperá.
LEY DE FUDD SOBRE LA OPOSICIÓN.&lt;/p&gt;
&lt;p&gt;Cuando se empuje algo con mucha fuerza, se caerá al suelo.
LEY DE ANTHONY SOBRE LA FUERZA.&lt;/p&gt;
&lt;p&gt;No lo fuerce. Cómprese un martillo más grande.
POSTULADO DE HORNER SOBRE LOS MANAZAS.&lt;/p&gt;
&lt;p&gt;La destreza es directamente proporcional al número de aparatos que haya estropeado por completo.
AXIOMA DE CAHN.&lt;/p&gt;
&lt;p&gt;Cuando todo falle, lea las instrucciones.
PRINCIPIO DE LOS APARATOS DE MÚLTIPLES USOS.&lt;/p&gt;
&lt;p&gt;Cuantas menos cosas pueda hacer un aparato, mejor las hará.
PRINCIPIO DE COOPER.&lt;/p&gt;
&lt;p&gt;Todas las máquinas son amplificadores.
LEY DE JENKINSON.&lt;/p&gt;
&lt;p&gt;De todas maneras, no funcionará.
Investigacionología y academiología.&lt;/p&gt;
&lt;p&gt;LEY DE GORDON.&lt;/p&gt;
&lt;p&gt;Si una investigación no merece la pena, tampoco merece la pena hacerla bien.
LEY DE MURPHY SOBRE LA INVESTIGACIÓN.&lt;/p&gt;
&lt;p&gt;Las investigaciones que realice, sobre todo si son muchas, tenderán a apoyar sus teorías.
LEY DE MAIER.&lt;/p&gt;
&lt;p&gt;Si los hechos no se ajustan a la teoría, tendrá que deshacerse de ellos.
Corolarios.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más amplia sea una teoría, mejor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Se puede considerar que el experimento ha sido un éxito cuando (para que se ajuste a la teoría) no hay que eliminar más del 50 por 100 de las medidas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE WILLIAMS Y HOLLAND.&lt;/p&gt;
&lt;p&gt;Si se reúnen suficientes datos, se puede demostrar cualquier cosa con ayuda de la estadística.
LEY DE PEER.&lt;/p&gt;
&lt;p&gt;La solución de un problema cambia la naturaleza del mismo.
LEY DE HARVARD.&lt;/p&gt;
&lt;p&gt;En condiciones rigurosamente controladas de presión, temperatura, volumen, humedad y otras variables, el organismo actúa como le sale de las narices.
CUARTA LEY DE LAS REVISIONES.&lt;/p&gt;
&lt;p&gt;Después de cuidadísimos y exactísimos análisis de una muestra, siempre resulta que no era esa la que se tenía que analizar.
LEY DE HERSH.&lt;/p&gt;
&lt;p&gt;La Bioquímica se expande hasta ocupar todo el espacio y tiempo disponibles en el campo editorial.
LEY DE FETT DEL LABORATORIO.&lt;/p&gt;
&lt;p&gt;Nunca intente repetir un experimento que haya salido bien.
LEY DE WYSZOWSKI.&lt;/p&gt;
&lt;p&gt;Ningún experimento es reproducible.
LEY DE LA EXACTITUD.&lt;/p&gt;
&lt;p&gt;Cuando se está trabajando para encontrar la solución a un problema, siempre resulta de gran ayuda saber la respuesta.
LEY DE YOUNG.&lt;/p&gt;
&lt;p&gt;Todos los grandes descubrimientos se hacen por error.
Corolario.&lt;/p&gt;
&lt;p&gt;Cuanto mayor es la subvención, más tiempo hace falta para cometer el error.
FACTOR DE INUTILIDAD.&lt;/p&gt;
&lt;p&gt;Ningún experimento es un fracaso absoluto. Siempre puede servir de ejemplo negativo.
LEY DE PARKINSON SOBRE LA INVESTIGACIÓN MÉDICA.&lt;/p&gt;
&lt;p&gt;Las investigaciones que tienen éxito atraen las mayores subvenciones, y esto imposibilita las posteriores investigaciones en ese campo.
LEY DE PARKINSON.&lt;/p&gt;
&lt;p&gt;El progreso de la ciencia es inversamente proporcional al número de revistas especializadas que se publican.
LEY DE BROOKE.&lt;/p&gt;
&lt;p&gt;Cuando un sistema está completamente definido, siempre hay algún estúpido que encuentra algo que, o bien lo anula, o bien lo expande hasta que no haya Dios que lo reconozca.
LEY DE TENENBAUN SOBRE LA REPLICABILIDAD.&lt;/p&gt;
&lt;p&gt;Los resultados más interesantes tienen lugar sólo una vez.
LEY DE SOUNDER.&lt;/p&gt;
&lt;p&gt;La repetición de un experimento no asegura la validez del mismo.
GUÍA DE HANDY PARA LA CIENCIA MODERNA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si es verde o se retuerce, es Biología.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si apesta, es Química.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si no funciona, es Física.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;EXTENSIONES DE CERF A LA GUÍA DE HANDY PARA LA CIENCIA MODERNA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si es incomprensible, es Matemáticas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si no tiene sentido, es Economía o Filosofía.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PRINCIPIO DE BARR SOBRE LA INERCIA.&lt;/p&gt;
&lt;p&gt;Pedirle a un grupo de científicos que revisen sus teorías es lo mismo que pedirle a un grupo de policías que revisen la ley.
LA FALACIA DE SAGAN.&lt;/p&gt;
&lt;p&gt;Decir que un ser humano no es más que un conjunto de moléculas, es como decir que una obra de Shakespeare no es más que un conjunto de palabras.
PRIMERA LEY DE LA FÍSICA DE PARTÍCULAS.&lt;/p&gt;
&lt;p&gt;Cuanto más corta es la vida de una partícula, más caro resultará producirla.
SEGUNDA LEY DE LA FÍSICA DE PARTÍCULAS.&lt;/p&gt;
&lt;p&gt;Los bloques básicos que constituyen la materia no se dan en la naturaleza.
PRIMERA LEY DEL PROGRESO CIENTÍFICO.&lt;/p&gt;
&lt;p&gt;El avance de la ciencia se puede medir por la velocidad con que se acumulan las excepciones a las leyes anteriormente establecidas.
Corolarios.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Las excepciones son siempre más numerosas que las reglas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Siempre hay excepciones para las excepciones establecidas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando se llegan a dominar las excepciones, nadie recuerda a que regla corresponden.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;EXCLUSIONES DE GOLOMB A LOS MODELOS MATEMÁTICOS.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No crea en las consecuencias de 33º orden de un modelo de primer orden.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lema publicitario: Cum grano salis.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No extrapole más allá de la región indicada.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lema publicitario: “No se pase de la raya”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No aplique ningún modelo hasta que no entienda los supuestos simplificados sobre los que se fundamenta y compruebe que es aplicable.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lema publicitario: “Utilícese según las indicaciones”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No crea que el modelo es la realidad.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lema publicitario: “No coma el menú”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No distorsione la realidad para que se ajuste al modelo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lema publicitario: “El Método Procusto”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No se limite a un solo modelo. Emplear más de uno puede ser útil para entender los distintos aspectos de un mismo fenómeno.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lema publicitario: “Legalización de la poligamia”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No defienda un modelo desprestigiado.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lema publicitario: “No pida peras al olmo”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No se enamore de su modelo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lema publicitario: “Pigmalión”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No aplique la terminología del Tema A al Tema B si no es para enriquecer alguno de los dos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lema publicitario: “Renovarse o morir”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;No piense que ha destruido un demonio sólo porque le ha puesto nombre.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Lema publicitario: “Rumpelstiltskin”.&lt;/p&gt;
&lt;p&gt;LEY DE FELSON.&lt;/p&gt;
&lt;p&gt;Robar ideas a una persona es plagio. Robárselas a muchas es investigación.
REGLAS DE PAVLU PARA LA ECONOMÍA EN LA INVESTIGACIÓN.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Niegue la última verdad establecida de la lista.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Añada su verdad.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Envíe la lista a sus colegas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DEL SEÑOR COOPER.&lt;/p&gt;
&lt;p&gt;Si no entiende un término específico en un texto técnico, páselo por alto. El texto tendrá sentido sin él.
COROLARIO DE BOGOVICH A LA LEY DEL SEÑOR COOPER.&lt;/p&gt;
&lt;p&gt;Si el texto no tiene sentido sin esa palabra, tampoco lo tendría con ella.
LEY DE SUPERVIVENCIA EN LA UNIVERSIDAD DE MEREDITH.&lt;/p&gt;
&lt;p&gt;Nunca permita que el profesor de su especialidad se entere de que usted existe.
LEY DE ELLARD.&lt;/p&gt;
&lt;p&gt;Los que quieren aprender, aprenderán.
Los que no quieren aprender, serán directores de empresa.
Los que sean incapaces de aprender y de dirigir empresas, serán los que controlen hasta la muerte la concesión de becas y empresas.
LEY DE VILE PARA LOS EDUCADORES.&lt;/p&gt;
&lt;p&gt;Nadie atiende en clase hasta que usted mete la pata.
LEY DE VILE SOBRE EL ORDEN DE LOS PAPELES.&lt;/p&gt;
&lt;p&gt;Todos los papeles de un montón que van después del primero, están, o bien al revés, o bien boca abajo, hasta que usted los ordena. Luego, se repite el proceso.
LEY DE WEINER SOBRE LAS BIBLIOTECAS.&lt;/p&gt;
&lt;p&gt;Nunca hay respuestas, sino referencias a otros textos.
Investigacionología avanzada.&lt;/p&gt;
&lt;p&gt;LEY DEL TRABAJO DE LABORATORIO.&lt;/p&gt;
&lt;p&gt;El vidrio caliente tiene la misma apariencia que el vidrio frío.
REGLA BÁSICA PARA LOS TRABAJADORES DE LOS LABORATORIOS.&lt;/p&gt;
&lt;p&gt;Cuando no sepa que es lo que esta haciendo, hágalo con esmero y primor.
REGLA DE FINAGLE.&lt;/p&gt;
&lt;p&gt;El trabajo en equipo es esencial. Le permitirá echarle la culpa al otro.
CREDO DE FINAGLE.&lt;/p&gt;
&lt;p&gt;La ciencia es verídica, no deje que le engañen los hechos.
LEY DE MUENCH.&lt;/p&gt;
&lt;p&gt;No hay nada que perfeccione tanto una innovación como la falta de control.
LEY DE LERMAN SOBRE LA TECNOLOGÍA.&lt;/p&gt;
&lt;p&gt;Cualquier problema técnico se puede solucionar si se cuenta con suficiente tiempo y dinero.
Corolario de Lerman.&lt;/p&gt;
&lt;p&gt;Nunca se cuenta con suficiente tiempo y dinero.
LEY DE VESILIND SOBRE LA EXPERIMENTACIÓN.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si la repetición del experimento puede plantear problemas, hágalo sólo una vez.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si se requiere un ajuste en línea recta, halle solamente dos puntos de referencia.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PRIMER POSTULADO DE THUMB.&lt;/p&gt;
&lt;p&gt;Es mejor resolver un problema con una aproximación grosera y conocer la verdad, 10 por 100 más o menos, que exigir una solución exacta y desconocer la verdad.
SEGUNDO POSTULADO DE THUMB.&lt;/p&gt;
&lt;p&gt;Una falsedad práctica y fácil de entender es más útil que una verdad compleja e incomprensible.
LA REGLA DE LAS REGLAS.&lt;/p&gt;
&lt;p&gt;La línea recta no existe.
LEY DE JONES.&lt;/p&gt;
&lt;p&gt;Cualquier persona que haga una contribución significativa en cualquier campo y permanezca en este campo el tiempo suficiente, se convierte en un obstáculo para su progreso y esto es directamente proporcional a la importancia de su contribución original.
LEY DE MANN (generalizada).&lt;/p&gt;
&lt;p&gt;Si un científico descubre un hecho publicable, éste pasará a ser el centro de su teoría.
Corolario.&lt;/p&gt;
&lt;p&gt;Y, a la vez, su teoría se convertirá en el centro de todo su pensamiento científico.
LEY DE GRELB SOBRE LOS ERRORES.&lt;/p&gt;
&lt;p&gt;En cualquier serie de cálculos, los errores tienden a aparecer justo en el punto opuesto a aquel en el que usted empieza a comprobar si existen errores.
AXIOMA DE ROBERT.&lt;/p&gt;
&lt;p&gt;Lo único que existe son los errores.
COROLARIO DE BERMAN AL AXIOMA DE ROBERT.&lt;/p&gt;
&lt;p&gt;El error de un hombre es la información de otro.
LEY DE LA FALTA DE FIABILIDAD.&lt;/p&gt;
&lt;p&gt;Errar es humano, pero para liar las cosas de verdad, hace falta un ordenador.
REGLA DE SUTIN.&lt;/p&gt;
&lt;p&gt;De todas las cosas que se pueden hacer con un ordenador, las más inútiles son las más divertidas.
LEY DE GREER.&lt;/p&gt;
&lt;p&gt;Un programa de ordenador hace lo que usted le ordena que haga, no lo que quiere usted que haga.
AXIOMAS INFORMÁTICOS DE McCRISTY.&lt;/p&gt;
&lt;p&gt;. Los archivos de apoyo nunca están completos.&lt;/p&gt;
&lt;p&gt;. Los fallos de software se pueden corregir sólo cuando la industrias considera que se ha quedado obsoleto.&lt;/p&gt;
&lt;p&gt;AXIOMA INFORMÁTICO DE LEO BEISER.&lt;/p&gt;
&lt;p&gt;Cuando archive algo en la memoria, acuérdese de donde lo guardo.
NORMA DE STEINBACH PARA LOS SISTEMAS DE PROGRAMACIÓN.&lt;/p&gt;
&lt;p&gt;No trate nunca de verificar una condición de error que no sepa manejar.
Academiología.&lt;/p&gt;
&lt;p&gt;LEYES PARA LA PROGRAMACIÓN DE CLASES.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si la asignatura que más le apetecía hacer tenía un número límite de n estudiantes, usted será el n+1 que solicitó matricularse.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Los horarios se elaboraran con el único y exclusivo objeto de que los estudiantes pierdan el máximo tiempo posible entre las clases.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolario.&lt;/p&gt;
&lt;p&gt;Si, por casualidad, consigue tener dos clases seguidas, se impartirán en los dos edificios más distantes entre sí de todo el recinto universitario.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Si para hacer una asignatura, que le apetece mucho necesita estudiar otra previamente, esta última sólo se ofrecerá durante el cuatrimestre siguiente a la deseada.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PRIMERA LEY DE LOS EXÁMENES FINALES.&lt;/p&gt;
&lt;p&gt;Las pilas de la calculadora de bolsillo, que han durado todo el curso, se agotarán durante el examen final de matemáticas.
Corolario.&lt;/p&gt;
&lt;p&gt;Si lleva pilas de recambio, serán defectuosos.
SEGUNDA LEY DE LOS EXÁMENES FINALES.&lt;/p&gt;
&lt;p&gt;En su examen final más difícil, la compañera de clase más maciza y atractiva se sentará a su lado por primera vez en todo el curso.
LEYES DEL TERROR APLICADO.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuando repase sus apuntes antes de un examen, se dará cuenta de que lo más importante es ilegible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más haya estudiado para un examen, menos seguro estará de cual es la respuesta que le piden.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El 80 por 100 del examen final está extraido de la clase a la que faltó y del libro que no ha leído.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La noche antes del parcial de Historia, el profesor de Biología le mandará que se lea doscientas páginas sobre insectos.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolario.&lt;/p&gt;
&lt;p&gt;Todos los profesores dan por sentado que lo único que usted tiene que hacer es estudiar su asignatura.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Si tiene que hacer un examen en el que se pueden usar libros, se le olvidará llevarlos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolario.&lt;/p&gt;
&lt;p&gt;Si tiene que redactar un trabajo en casa, se le olvidará donde vive.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;A final de curso se acordará de que se había matriculado en una asignatura… y nunca ha ido a clase.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE NATALIE SOBRE EL ÁLGEBRA.&lt;/p&gt;
&lt;p&gt;No lo comprenderá hasta después del examen.
LEY DE SEIT SOBRE LA EDUCACIÓN SUPERIOR.&lt;/p&gt;
&lt;p&gt;La única asignatura que le queda para licenciarse no se impartirá durante el segundo cuatrimestre.
NORMAS DE ROMINGER PARA LOS ESTUDIANTES.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más general sea el título del curso, menos aprenderá en él.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más específico sea, menos posibilidades tendrá de poder aplicarlo después.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE MURPHY DEL TRABAJO DE FIN DE CURSO.&lt;/p&gt;
&lt;p&gt;El libro o la revista fundamental para terminar su trabajo de fin de curso será el único que no esté en la biblioteca.
Corolario.&lt;/p&gt;
&lt;p&gt;Si no falta, le habrán arrancado las páginas más importante.
LEY DE DUGGAN SOBRE LA INVESTIGACIÓN ERUDITA.&lt;/p&gt;
&lt;p&gt;No podrá determinar la fuente de la cita más valiosa.
Corolario.&lt;/p&gt;
&lt;p&gt;La fuente de la cita que usted olvidó consignar, aparecerá en la crítica más desfavorable a su trabajo.
REGLAS DE ROMINGER PARA LOS ENSEÑANTES.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuando un estudiante le pregunte por segunda vez si ya ha leído su resumen del libro, quiere decir que él no lo había leído.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si la asistencia diaria a clase es obligatoria, un examen anunciado producirá un mayor absentismo. Si es opcional, verá caras que no había visto nunca antes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Murpyhología del trabajo y la oficina.&lt;/p&gt;
&lt;p&gt;LEY DE HARDIN.&lt;/p&gt;
&lt;p&gt;Nunca se puede hacer solamente una cosa.
LEY DE HETCH.&lt;/p&gt;
&lt;p&gt;No hay mejor momento que el presente para que retrase lo que no quiere hacer.
LEMA DE GROSSMAN.&lt;/p&gt;
&lt;p&gt;Cualquier cosa que vale la pena hacer, ayer también valía la pena hacerla.
DERIVADO DE KNAGG DE LA LEY DE MURPHY.&lt;/p&gt;
&lt;p&gt;Cuanto más complicado y grandioso sea un plan, mayores serán las posibilidades de que se vaya al traste.
AXIOMA DE DEHAY.&lt;/p&gt;
&lt;p&gt;Los trabajos sencillos siempre se dejan para después, porque ya habrá tiempo de hacerlos.
LEY DE WESTHERN SOBRE EL JUICIO CONDICIONAL.&lt;/p&gt;
&lt;p&gt;La suposición es la madre de todas las pifias.
REGLAS DE RAY SOBRE PRECISIÓN.&lt;/p&gt;
&lt;p&gt;Mida con micrómetro.&lt;/p&gt;
&lt;p&gt;Marque con tiza.&lt;/p&gt;
&lt;p&gt;Corte con hacha.&lt;/p&gt;
&lt;p&gt;EXTENSIÓN DE EINSTEIN A LA LEY DE MURPHY.&lt;/p&gt;
&lt;p&gt;Un proyecto de trabajo se expande hasta llenar todo el espacio disponible.
Corolario.&lt;/p&gt;
&lt;p&gt;No importa lo grande que sea el espacio. Si hay dos proyectos que deben hacerse a la vez, los dos requerirán la misma porción de espacio de trabajo.
CUATRO PRINCIPIOS DE TALLER.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;La llave inglesa o el taladro que usted necesite serán precisamente los que falten en la caja de herramientas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Para la mayor parte de los montajes hacen falta tres manos.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las tuercas sobrantes nunca ajustan con los tornillos sobrantes.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más cuidadosamente se planifique un proyecto, mayor confusión se producirá cuando algo falle.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE LAS REPARACIONES.&lt;/p&gt;
&lt;p&gt;Si no se ha roto, no lo podrá arreglar.
REGLA DEL PENSAMIENTO INTELIGENTE.&lt;/p&gt;
&lt;p&gt;Guarde todas las piezas.
LEY DE SMITH SOBRE LA REPARACIÓN DE ORDENADORES.&lt;/p&gt;
&lt;p&gt;Los orificios de acceso tendrán medio milímetro menos de diámetro.
Corolario.&lt;/p&gt;
&lt;p&gt;Los que tengan el diámetro adecuado, no estarán en el sitio que les corresponda.
LEY DE JARUK.&lt;/p&gt;
&lt;p&gt;Si fuera más barato comprar uno nuevo, la empresa insistiría en arreglar el viejo.
DILEMA DE DEVRIES.&lt;/p&gt;
&lt;p&gt;Si golpea al mismo tiempo dos teclas de la máquina de escribir, la letra que sale en el papel es la otra.
TEORÍA DE LA SUPERVISIÓN SELECTIVA.&lt;/p&gt;
&lt;p&gt;El único momento del día en que uno se apoya cómodamente en el respaldo de la silla y se relaja es cuando el jefe se da una vuelta por la oficina.
OBSERVACIÓN DE LAUNEGAYER.&lt;/p&gt;
&lt;p&gt;Es más fácil hacer preguntas estúpidas que corregir errores estúpidos.
LEYES DE GORE SOBRE LA INGENIERÍA DE DISEÑO.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;La función primaria de la ingeniería del diseño es poner las cosas difíciles al fabricantes e imposibles a los de mantenimiento.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En cualquier circuito, el componente que tenga menor duración se instalará en el punto menos accesible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cualquier circuito de diseño debe tener, por lo menos, una pieza obsoleta, dos que sean imposibles de encontrar y tres que se encuentren aún en periodo de prueba.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolarios.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;El ingeniero del proyecto cambiará los planos en el último momento.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Los cambios no aparecerán en el manual de funcionamiento.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;SEIS LEYES DE MURPHYOLOGÍA DE OFICINA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Las cartas importantes que no tienen faltas, engendrarán varias cuando estén en el correo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolario.&lt;/p&gt;
&lt;p&gt;Los errores correspondientes aparecerán en la carta mientras la esté leyendo el jefe.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Las máquinas de la oficina, que funcionan perfectamente en las horas normales de trabajo, se descompondrán en cuanto vaya de tapadillo por la noche y las utilice para asuntos personales.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las máquinas que se hayan roto, funcionarán perfectamente en cuanto aparezca el técnico a repararlas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Los sobres y sellos que no se pegan cuando se chupan, se quedan adheridos a cualquier cosa cuando menos se desea.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Los papeles vitales demostrarán su vitalidad moviéndose espontáneamente desde el sitio en el que usted los dejó hasta donde no se puedan encontrar.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La última persona que se marchó o despidieron de la empresa, será la que tenga la culpa de que todo vaya mal… hasta que despidan a otra.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE BOGOVICH.&lt;/p&gt;
&lt;p&gt;El que duda, probablemente tiene razón.
LEY DE BRINTALL.&lt;/p&gt;
&lt;p&gt;Si le dan dos órdenes contradictorias, obedezca las dos.
LEY DE JOHNSON.&lt;/p&gt;
&lt;p&gt;El número de enfermedades menores entre los empleados es inversamente proporcional a la salud de la empresa.
PRINCIPIO DE TILLIS SOBRE ORGANIZACIÓN.&lt;/p&gt;
&lt;p&gt;Si lo archiva, sabrá donde está, pero nunca le hará falta. Si no lo archiva, lo necesitará pero nunca sabrá donde se encuentra.
LEY DE SANDILAND.&lt;/p&gt;
&lt;p&gt;El tiempo libre del que puede disponer de una forma imprevista, lo malgastará inevitablemente.
LEY DE DOANE SOBRE LA DEMORA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más eficiente se sea para llegar tarde. menos eficiente se será para todo lo demás.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más despacio se trabaja, menos errores se cometen.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE SCOTT SOBRE LOS NEGOCIOS.&lt;/p&gt;
&lt;p&gt;No vaya nunca por el pasillo de su empresa sin llevar un papel en la mano.
LEY DE EDDIE SOBRE LOS NEGOCIOS.&lt;/p&gt;
&lt;p&gt;No negocie nada nunca antes de las diez de la mañana ni después de las cuatro de la tarde. Antes de las diez, pensarán que está muy impaciente y después de las cuatro, que está desesperado.
TABLA DE EXCUSAS ÚTILES PARA LA OFICINA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Siempre se ha hecho así.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No sabía que lo necesitara con urgencia.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nadie me dijo que lo hiciera.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Estaba esperando su permiso.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;¿Cómo iba a saber que esto era diferente?.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Este es su trabajo, no el mío.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Espera hasta que vuelva el jefe y pregúntale.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No hemos cometido muchos errores.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No creía que fuera tan importante.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Estoy tan ocupado que no puedo dedicarle ni un minuto.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Creía que te lo había dicho.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No me contrataron para hacer esto.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE CONOR.&lt;/p&gt;
&lt;p&gt;Si hay un documento confidencial, alguien se lo dejará en la fotocopiadora.
LEY DE DRUMMOND SOBRE LA CONTRATACIÓN DE PERSONAL.&lt;/p&gt;
&lt;p&gt;El curriculum ideal llegará a sus manos un día después de que se haya cubierto la plaza.
LEY DE GLUCK.&lt;/p&gt;
&lt;p&gt;Dé las vueltas que dé antes de entrar en el ascensor, los botones siempre estarán a sus espalda.
LEY DE LYNCH.&lt;/p&gt;
&lt;p&gt;En cuanto deje la cartera en el suelo, llegará el ascensor.
FOX SOBRE LOS QUE SIEMPRE DICEN QUE SÍ AL JEFE.&lt;/p&gt;
&lt;p&gt;Vale la pena intrigar para ser portador de buenas noticias.
Corolario.&lt;/p&gt;
&lt;p&gt;No esté en el edificio cuando lleguen las malas noticias.
LEY DE PINTO.&lt;/p&gt;
&lt;p&gt;Si le hace a alguien un favor, le tendrá que hacer muchos más.
AXIOMA ORNITOLÓGICO DE LANGSAM.&lt;/p&gt;
&lt;p&gt;Es difícil elevarse como las águilas cuando se trabaja con pavos.
Sistemántica.&lt;/p&gt;
&lt;p&gt;TEOREMA FUNDAMENTAL.&lt;/p&gt;
&lt;p&gt;Los nuevos sistemas generan nuevos problemas.
Corolario.&lt;/p&gt;
&lt;p&gt;No es aconsejable multiplicar innecesariamente el número de sistemas.
PRINCIPIO DE LA INCERTIDUMBRE GENERALIZADA.&lt;/p&gt;
&lt;p&gt;Los sistemas tienden a crecer y, a medida que lo hacen, se pasan de la raya.&lt;/p&gt;
&lt;p&gt;Formulaciones alternativas:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Los sistemas complicados producen resultados inesperados.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No se puede predecir el comportamiento global de los grandes sistemas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolario: Teorema de la No Aditividad del Comportamiento de los Sistemas.&lt;/p&gt;
&lt;p&gt;Un sistema grande, que se ha creado aumentando las dimensiones de un sistema pequeño, no se comporta de la misma manera que el sistema más pequeño
ENGAÑO DEL FUNCIONARIO.&lt;/p&gt;
&lt;p&gt;Las personas que trabajan con sistemas, no hacen lo que los sistemas dicen que están haciendo.
FALACIA OPERATIVA.&lt;/p&gt;
&lt;p&gt;El propio sistema no hace lo que dice que está haciendo.
PRIMERA LEY DE LA SISTEMÁNTICA.&lt;/p&gt;
&lt;p&gt;Está demostrado que un sistema complejo, que funciona, se ha creado siempre a partir de un sistema simple que funciona.
SEGUNDA LEY DE LA SISTEMÁNTICA.&lt;/p&gt;
&lt;p&gt;Un sistema complejo diseñado partiendo de cero, no funciona nunca y no se puede modificar para que funcione. Hay que volver a empezar, partiendo de un sistema sencillo que funcione.
POSTULADOS FUNDAMENTALES DE LA TEORÍA AVANZADA DE SISTEMAS.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Todo es un sistema.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Todo es parte de un sistema mayor.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El Universo está infinitamente sistematizado, tanto hacia arriba (sistemas más grandes) como hacia abajo (sistemas más pequeños).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Todos los sistemas son infinitamente complejos (La ilusión de que son simples proviene de centrar la atención en una o pocas variables).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PRINCIPIO DE CHATELIER&lt;/p&gt;
&lt;p&gt;Los sistemas complejos tienden a oponerse a sus propias funciones.
Murphyología situacional.&lt;/p&gt;
&lt;p&gt;LEY DE DRAZEN SOBRE LA RESTITUCIÓN.&lt;/p&gt;
&lt;p&gt;El tiempo necesario para rectificar una situación es inversamente proporcional al tiempo que se tardó en crearla.
Ejemplo número 1:&lt;/p&gt;
&lt;p&gt;Hace falta más tiempo para pegar un florero que para romperlo.&lt;/p&gt;
&lt;p&gt;Ejemplo número 2:&lt;/p&gt;
&lt;p&gt;Hace falta más tiempo para perder x kilos que para ganarlos.&lt;/p&gt;
&lt;p&gt;LEY DE LOS AUTOSERVICIOS.&lt;/p&gt;
&lt;p&gt;El plato que le llamó la atención desde que se puso usted en la cola se lo llevará el que va delante de usted.
LEY DE DAVIS.&lt;/p&gt;
&lt;p&gt;Si el titular de un periódico es una pregunta, la respuesta es “no”.
OBSERVACIÓN DE ETORRE.&lt;/p&gt;
&lt;p&gt;La otra cola es más rápida.
VARIACIÓN DE O'BRIEN A LA OBSERVACIÓN DE ETORRE.&lt;/p&gt;
&lt;p&gt;Si cambia de cola, la que acaba de dejar empezará a avanzar más deprisa que la nueva.
Corolario de Kenton.&lt;/p&gt;
&lt;p&gt;Si vuelve a la primera, lo único que conseguirá es que se produzca un tumulto y todo el mundo se mosquee con usted.
PRINCIPIO DE LA ESPERA.&lt;/p&gt;
&lt;p&gt;Cuanto más tiempo lleva en una cola, más probabilidades hay de que se haya equivocado de ventanilla.
REGLA DE FLUGG.&lt;/p&gt;
&lt;p&gt;El cajero más lento siempre está en la caja rápida.
REGLA DE WITTEN.&lt;/p&gt;
&lt;p&gt;Siempre que se corte las uñas, le picará algo una hora después.
LEY DE STORRY SOBRE EL PROCESAMIENTO CRIMINAL.&lt;/p&gt;
&lt;p&gt;El grado de culpabilidad es directamente proporcional a la vehemencia con que se niega todo.
OBSERVACIÓN DE TRACY SOBRE EL TIEMPO.&lt;/p&gt;
&lt;p&gt;Los buenos momentos terminan en seguida. Los malos se prolongan hasta la eternidad.
LEY DE NORRIS.&lt;/p&gt;
&lt;p&gt;La ola de calor aparece justo cuando se estropea el aire acondicionado de la oficina.
LEYES DEL REVERENDO CHICHESTER.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si hace un tiempo terriblemente malo, la asistencia a la iglesia será escasa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si hace un tiempo estupendo, la asistencia a la iglesia será escasa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si quedan pocas hojas parroquiales, la asistencia superará todas las previsiones.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DEL EQUILIBRIO.&lt;/p&gt;
&lt;p&gt;Los malos hábitos inutilizan a los buenos.
Ejemplo: El zumo de naranja que se tomó para desayunar, quedará neutralizado por el cigarrillo que se fumó después y la chocolatina que se comió a media mañana.&lt;/p&gt;
&lt;p&gt;LEY DE JILLY.&lt;/p&gt;
&lt;p&gt;Cuanto más horrendo sea el corte de pelo, más despacio le crecerá.
LEY DE JONES SOBRE LA IMPRENTA.&lt;/p&gt;
&lt;p&gt;Hay errores que pasan desapercibidos hasta que el libro está en la imprenta.
Corolario de Block.&lt;/p&gt;
&lt;p&gt;Cuando el autor recibe las pruebas y abre el libro al azar, se encuentra con el error más garrafal.
LEY DE WALLACE WOOD SOBRE EL DIBUJO.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;No dibuje nunca lo que pueda copiar.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No copie nunca lo que pueda calcar.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No calque nunca lo que pueda recortar y pegar.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE HUTCHINSON.&lt;/p&gt;
&lt;p&gt;Si una situación exige toda su atención, al mismo tiempo sucederá algo que le distraerá por completo.
LEY DE FULLER SOBRE EL PERIODISMO.&lt;/p&gt;
&lt;p&gt;Cuanto más lejos sucede un accidente, mayor número de muertos y heridos hace falta para que sea noticia.
LEYES DE LA VERACIDAD EN LOS REPORTAJES.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más cerca se encuentre del lugar de los hechos, más evidentes serán los errores de los periódicos que cubran la información.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más lejos se encuentre del lugar de los hechos, experimentará mayor tendencia a creer lo que cuentan los periódicos que cubren la información.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE LA CARTA.&lt;/p&gt;
&lt;p&gt;La mejor manera de inspirar nuevas ideas es sellar las cartas con lacre.
LEY DE JONES SOBRE LOS ZOOLÓGICOS Y MUSEOS.&lt;/p&gt;
&lt;p&gt;Los ejemplares más interesantes no tienen nombre.
LEYES DEL FOTÓGRAFO.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;La posibilidad de hacer las mejores instantáneas surge siempre nada más terminar la última foto del carrete.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las mejores instantáneas posteriores intentaron hacerse con la tapa del objetivo puesta.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las mejores instantáneas que sobrevivieron se estropearon cuando alguien abrió distraídamente la puerta del cuarto de revelar y entró un chorro de luz.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE DEDERA.&lt;/p&gt;
&lt;p&gt;En un edificio de tres plantas con un único ascensor, éste se encontrará en otro piso nueve de cada diez veces.
LEY DE SIR WALTER.&lt;/p&gt;
&lt;p&gt;La tendencia del humo de un cigarrillo, parrilla, fuego de campamento, etc., a dirigirse a la cara de una persona es directamente proporcional a la sensibilidad de esa persona al humo.
LEY DE KAUFFMAN SOBRE LOS AEROPUERTOS.&lt;/p&gt;
&lt;p&gt;La distancia a la puerta de embarque es inversamente proporcional al tiempo que se dispone para no perder el vuelo.
LEY DE ROGERS.&lt;/p&gt;
&lt;p&gt;En cuanto la azafata sirve el café, el avión entra en zona de turbulencias.
Explicación de Davis a la Ley de Rogers.&lt;/p&gt;
&lt;p&gt;Servir café en un avión produce turbulencias.
PRINCIPIO BÁSICO DEL EQUIPAJE.&lt;/p&gt;
&lt;p&gt;Se ponga junto a la cinta transportadora que se ponga, su equipaje vendrá por otra.
AXIOMA DE ANGUS SOBRE CAMBIO DE MONEDA.&lt;/p&gt;
&lt;p&gt;Cuando se viaja al extranjero, el tipo de cambio mejorará mucho al día siguiente de haber comprado las divisas.
Corolario.&lt;/p&gt;
&lt;p&gt;Al regresar a casa, el tipo de cambio bajará de nuevo en cuanto se hayan cambiado todas las divisas sobrantes.
LEY DE WAGNER SOBRE LAS RETRANSMISIONES DEPORTIVAS.&lt;/p&gt;
&lt;p&gt;Cuando la cámara se centra en un atleta, éste escupirá, se hurgará la nariz o se rascará.
LEY DE CROSBY.&lt;/p&gt;
&lt;p&gt;Se puede saber lo malo que es un musical por el número de veces que el coro grita “¡Amor!”.
LEY DE FULTON SOBRE LA GRAVEDAD.&lt;/p&gt;
&lt;p&gt;El esfuerzo para recoger al vuelo un objeto que se puede romper, producirá un desastre mucho mayor que dejarlo caer.
LEY AVANZADA DE VILE SOBRE EL ARTE DE HACER COLA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si se dirige corriendo hacia una cola corta, antes de que llegue será larguísima.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando esté esperando en una cola muy larga, la gente que está detrás de usted maniobrará y se colocará en la caja que acaba de abrir.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si abandona durante un segundo una cola corta, se convertirá en una larga hilera.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si se encuentra usted en una cola corta, la gente de delante colará a todos sus amigos y parientes y se convertirá en una cola larguísima.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Una cola corta en el exterior de un edificio se convertirá en una cola larguísima en el interior.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si se queda parado en un sitio el tiempo suficiente, se formará una cola detrás de usted.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE HOWDEN.&lt;/p&gt;
&lt;p&gt;Sólo se acordará de que tiene que echar una carta cuando no haya ningún buzón cerca.
LEYES DEL REPARTO DE CORREOS.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Las cartas de amor, los contratos de negocios y el dinero que le deben siempre llegan con tres semanas de retraso.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;. La publicidad siempre llega el mismo día en que la enviaron.&lt;/p&gt;
&lt;p&gt;LEY DE WRIGHT.&lt;/p&gt;
&lt;p&gt;Un médico puede enterrar sus errores, pero un arquitecto sólo le puede aconsejar al cliente que plante geranios.
LEY DE RUSH SOBRE LA GRAVEDAD.&lt;/p&gt;
&lt;p&gt;Cuando una máquina de tabaco o de chicle le devuelve el cambio, los duros se le caerán a los pies, mientras que las monedas de veinticinco rodarán lejos de su vista.
LEY DE REYNOLD SOBRE LA CLIMATOLOGÍA.&lt;/p&gt;
&lt;p&gt;La velocidad del tiempo es directamente proporcional al coste de la factura que acaba de pagar en la peluquería.
Sociomurphyología (humanismo).&lt;/p&gt;
&lt;p&gt;LEY DE SHIRLEY.&lt;/p&gt;
&lt;p&gt;La mayor parte de las personas se merecen a su pareja.
LEYES DE ARTHUR SOBRE EL AMOR.&lt;/p&gt;
&lt;p&gt;. Las personas que le atraen invariablemente, piensan que usted les recuerda a alguien.&lt;/p&gt;
&lt;p&gt;. La carta de amor que finalmente tuvo el valor de enviar, se retrasará en el correo el tiempo suficiente como para que usted haga el ridículo personalmente.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Los gestos románticos de otras personas parecen originales y excitantes. Los gestos románticos propios parecen ridículos y torpes.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE LAS PECULIARIDADES HUMANAS.&lt;/p&gt;
&lt;p&gt;Todo el mundo quiere que le miren, pero nadie quiere que le observen.
LEY DE THOMAS SOBRE LA FELICIDAD EN EL MATRIMONIO.&lt;/p&gt;
&lt;p&gt;La duración de un matrimonio es inversamente proporcional a la cantidad gastada en la boda.
PRIMERA LEY DE MURPHY SOBRE LOS MARIDOS.&lt;/p&gt;
&lt;p&gt;La primera vez que salga a la calle después del cumpleaños de su esposa, verá el regalo que le compró con un descuento del 50 por 100.
Corolario.&lt;/p&gt;
&lt;p&gt;Si ella va con usted, dará por sentado que lo compró porque era muy barato.
SEGUNDA LEY DE MURPHY SOBRE LOS MARIDOS.&lt;/p&gt;
&lt;p&gt;Los regalos que usted le compra a su esposa nunca son tan aparentes como los que su vecino le compra a la suya.
TERCERA LEY DE MURPHY SOBRE LOS MARIDOS.&lt;/p&gt;
&lt;p&gt;Los cachivaches que atesora su esposa, siempre estarán colocados encima de los que atesora usted.
PRIMERA LEY DE MURPHY SOBRE LAS ESPOSAS.&lt;/p&gt;
&lt;p&gt;Si le pide a su marido que compre cinco cosas en la tienda y luego añade otra más que se le acaba de ocurrir, se le olvidarán dos de las cinco primeras.
SEGUNDA LEY DE MURPHY SOBRE LAS ESPOSAS.&lt;/p&gt;
&lt;p&gt;Su marido siempre sale más favorecido en las fotos que le hace usted que usted en las que le hace él.
TERCERA LEY DE MURPHY SOBRE LAS ESPOSAS.&lt;/p&gt;
&lt;p&gt;Haga la división que haga de las tareas domésticas, a su marido siempre le tocarán las más sencillas.
TEORÍA DE JANA SOBRE EL AMOR.&lt;/p&gt;
&lt;p&gt;En el amor, la mujer nunca consigue lo que espera y el hombre nunca espera lo que consigue.
REGLA SOBRE LOS COMPAÑEROS DE CAMA.&lt;/p&gt;
&lt;p&gt;El que ronca es el que se duerme primero.
LEYES (asexuadas) DE GILESON SOBRE LAS EXPECTATIVAS.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Nunca se haga ilusiones sobre una cita a ciegas por el tono de voz que escuchó por teléfono.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nunca se haga ilusiones sobre una persona por el aspecto que tiene de espaldas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PREMISAS LÓGICAS DE COLVARD.&lt;/p&gt;
&lt;p&gt;La probabilidad de que ocurra cualquier cosa es del 50 por 100. O sucede o no sucede.
Comentario desmedido de Colvard.&lt;/p&gt;
&lt;p&gt;Esto es cierto, especialmente, en el caso de las mujeres.
CREDO DEL AGRICULTOR.&lt;/p&gt;
&lt;p&gt;Siembra tu amor el sábado por la noche y… reza el domingo para que se pierda la cosecha.
PRINCIPIO DE RUBY SOBRE LOS ENCUENTROS.&lt;/p&gt;
&lt;p&gt;La probabilidad de que se encuentre con un conocido aumenta cuando esté en compañía de alguien con quien no quiere que le vean.
LAMENTO DE CHEIT.&lt;/p&gt;
&lt;p&gt;Si ayuda a un amigo con problemas, se acordará de usted con toda seguridad.. la próxima vez que los tenga.
Corolario de Denniston.&lt;/p&gt;
&lt;p&gt;Si hace algo bueno una vez, alguien le pedirá que lo repita.
LEY DE MASON SOBRE LA SINERGIA.&lt;/p&gt;
&lt;p&gt;El día que uno vendería su alma a cualquier precio, sobran almas.
OBSERVACIONES DE RON PARA ADOLESCENTES.&lt;/p&gt;
&lt;p&gt;1.Las espinillas aparecen justo una hora antes de la cita.&lt;/p&gt;
&lt;p&gt;2.El arañazo del disco siempre cae en su canción favorito.&lt;/p&gt;
&lt;p&gt;LEY DE SCHRIMPTON SOBRE LA OPORTUNIDAD DE LOS ADOLESCENTES.&lt;/p&gt;
&lt;p&gt;Cuando la oportunidad llame a su puerta, tendrá los auriculares puestos.
LEMA DEL PROFESOR BLOCK.&lt;/p&gt;
&lt;p&gt;Perdona y recuerda.
LEY DE JACOB.&lt;/p&gt;
&lt;p&gt;Errar es humano. Echarle la culpa a otro es más humano todavía.
CONSEJO DE EDELSTEIN.&lt;/p&gt;
&lt;p&gt;No se preocupe por lo que otros piensen de usted. Están demasiado ocupados preocupándose por lo que usted piensa de ellos.
LEY DE BLOCKAGE.&lt;/p&gt;
&lt;p&gt;El que ríe el último… probablemente lo hace porque no ha entendido el chiste.
PRINCIPIO DE BEIFELD.&lt;/p&gt;
&lt;p&gt;La probabilidad de que un hombre conozca a una joven receptiva y deseable aumenta en proporción piramidal cuando está en compañía de:&lt;/p&gt;
&lt;p&gt;Otra joven.
Su esposa.
Un amigo más guapo y con dinero.
PRIMERA LEY DE SOCIOGENÉTICA.&lt;/p&gt;
&lt;p&gt;El celibato no es hereditario.
LEY DE HARTLEY.&lt;/p&gt;
&lt;p&gt;Nunca se acueste con nadie que esté más loco que usted.
LEY DE BECKHAP.&lt;/p&gt;
&lt;p&gt;Belleza por cerebro igual a constante.
POSTULADOS DE PARDO.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Todas las cosas buenas de la vida son ilegales, inmorales o engordan.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las tres cosas más leales de la vida son el dinero, un perro y una mujer vieja.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No se preocupe por el dinero, mientras pueda vivir bien y tener todo lo que le apetezca.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;EXTENSIÓN DE STEINKOPFF AL PRIMER POSTULADO DE PARDO.&lt;/p&gt;
&lt;p&gt;Las cosas buenas de la vida también producen cáncer a las ratas de laboratorio y tienen impuestos escandalosos.
LEY DE PARKER.&lt;/p&gt;
&lt;p&gt;La belleza es interior. La fealdad aflora rápidamente a la superficie.
LEY DEL CAPITÁN PENNY.&lt;/p&gt;
&lt;p&gt;Podrá engañar algunas veces a todo el mundo, y a algunas personas siempre. Pero nunca podrá engañar a MAMÁ.
LEY DE KATZ.&lt;/p&gt;
&lt;p&gt;Los hombres y las naciones actúan razonablemente cuando ya han agotado todas las otras posibilidades.
LEY DE PARKER SOBRE LAS DECLARACIONES POLÍTICAS.&lt;/p&gt;
&lt;p&gt;La veracidad de cualquier proposición no tiene nada que ver con su credibilidad y viceversa.
AXIOMA DEL SEÑOR COLE.&lt;/p&gt;
&lt;p&gt;La cantidad total de inteligencia del planeta permanece constante. La población, sin embargo, sigue aumentando.
PLAGIO DE STEELE A LA FILOSOFÍA DE ALGUIEN.&lt;/p&gt;
&lt;p&gt;Todos deberíamos creer en algo. Yo creo que me tomaré otra copa.
LA CONSTANTE DE KENNEDY.&lt;/p&gt;
&lt;p&gt;No se enfade, vénguese.
LEMA DE CANADA BILL JONES.&lt;/p&gt;
&lt;p&gt;Es un desatino moral permitir que los primos conserven su dinero.
LEMA DE JONES.&lt;/p&gt;
&lt;p&gt;Los amigos van y vienen, pero los enemigos se amontonan.
ANEXO DE McCLAUGHRY AL LEMA DE JONES.&lt;/p&gt;
&lt;p&gt;Si quiere tener un enemigo, haga un favor a alguien.
LEY DE VIQUE.&lt;/p&gt;
&lt;p&gt;Un hombre sin religión es como un pez sin bicicleta.
LEY DE HEIDI.&lt;/p&gt;
&lt;p&gt;La liberación de la mujer no fue tal.
OBSERVACIÓN DE DOOLEY.&lt;/p&gt;
&lt;p&gt;Fíjese en todo el mundo, pero sea usted el que corte el bacalao.
LEY DE ZAPPA.&lt;/p&gt;
&lt;p&gt;Hay dos cosas en la tierra que son universales: el hidrógeno y la estupidez.
RECORDATORIO DE GRELB.&lt;/p&gt;
&lt;p&gt;El 80 por 100 de las personas se consideran mejores conductores que la media.
TEOREMA DE MUNDER.&lt;/p&gt;
&lt;p&gt;Por cada “10″ hay diez “1″.
LEY DE DYKSTRA.&lt;/p&gt;
&lt;p&gt;Cada uno de nosotros es la persona más rara del mundo según el otro.
LEY DE MEYERS.&lt;/p&gt;
&lt;p&gt;En una situación social, lo más difícil de hacer suele ser lo correcto.
REGLA DEL CRITERIO AMPLIO.&lt;/p&gt;
&lt;p&gt;La gente que se resiste al cambio no puede resistir cambiar a peor.
POSTULADO DE WEATHERWAX.&lt;/p&gt;
&lt;p&gt;La vehemencia con que usted reacciona ante una información es inversamente proporcional a la exactitud de la misma.
PRINCIPIO DE LA IRA.&lt;/p&gt;
&lt;p&gt;No intente nunca calmar a nadie que se encuentre en el punto máximo de la ira.
LEY DE KENT SOBRE LA FAMILIA.&lt;/p&gt;
&lt;p&gt;No cambie nunca los planes a causa del tiempo.
LEY DE ELY.&lt;/p&gt;
&lt;p&gt;Use la ropa adecuada y el papel se representará sólo.
PRIMERA REGLA DE LA ACTUACIÓN.&lt;/p&gt;
&lt;p&gt;Pase lo que pase, haga creer que fue intencionado.
LEY DE LIVINGSTONE SOBRE LA GORDURA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;La grasa se expande y llena cualquier ropa que se ponga.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Una persona obesa camina siempre por el medio del pasillo.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolario.&lt;/p&gt;
&lt;p&gt;Dos personas obesas, se conozcan o no, caminarán siempre la una al lado de la otra.
LEY DE LA LLEGADA.&lt;/p&gt;
&lt;p&gt;Los que viven más cerca, llegan más tarde.
LEY DE ZADRA SOBRE LA BIOMECÁNICA.&lt;/p&gt;
&lt;p&gt;La intensidad del picor es inversamente proporcional a la facilidad de acceso del punto en que se produce.
LAS TRES FRASES MENOS CREÍBLES.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;“El cheque ya está enviado”.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“Claro que te respetaré por la mañana”.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“Soy del Gobierno y estoy aquí para ayudarle”.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE VOLTAIRE.&lt;/p&gt;
&lt;p&gt;No hay nada más respetable que una maldad antigua.
Murphyología médica.&lt;/p&gt;
&lt;p&gt;SEIS PRINCIPIOS PARA LOS PACIENTES.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Sólo porque el médico sepa el nombre de su enfermedad, no significa que sepa lo que es.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más viejas y aburridas sean las revistas de la sala de espera, más tiempo tendrá que aguardar a que le reciban.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Sólo los adultos tienen problemas con las botellas a prueba de niños.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Nunca quedan bastantes pastillas para el último día de tratamiento.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Las pastillas que hay que tomar en las comidas son las más asquerosas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolario.&lt;/p&gt;
&lt;p&gt;Hasta el agua sabe mal cuando se toma por prescripción facultativa.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Si parece que sus padecimientos están mejorando, lo más probable es que su médico esté poniéndose enfermo.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEYES DE SMITH SOBRE EL BRIDGE.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si tiene un semifallo o no tiene nada, entonces su compañero no pasa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si tiene la K, la J y el 9 de diamantes y el as de picas, el idiota de su derecha tendrá el as, la Q y el 10 de diamantes y el rey de picas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando es usted el que da, siempre pinta lo que peor le viene.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE THOMAS.&lt;/p&gt;
&lt;p&gt;El que no quiere jugar es el que gana todas las manos.
RASGO DE HENRY SOBRE LA NATURALEZA HUMANA.&lt;/p&gt;
&lt;p&gt;Nadie ama a un ganador que gana siempre.
LEY DE TODD.&lt;/p&gt;
&lt;p&gt;Si todo sigue igual, usted perderá.
Corolario.&lt;/p&gt;
&lt;p&gt;Si todo se pone a su favor, perderá lo mismo.
LEY DE JENSEN.&lt;/p&gt;
&lt;p&gt;Gane o pierda, perderá.
LEYES DE PORKINGHAM SOBRE LA PESCA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;El tiempo del que disponga para ir de pesca disminuirá a medida que se acerque la temporada.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El pescador con menos experiencia siempre es el que pesca el pez más grande.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolario.&lt;/p&gt;
&lt;p&gt;Cuanto más sofisticado y caro sea su equipo, más probabilidades tiene de pararse en la pescadería a la vuelta.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Cuanto más se le haya enredado el sedal, más peces habrá por los alrededores.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE MITCHELL PARA LOS FUTUROS ESCALADORES.&lt;/p&gt;
&lt;p&gt;La montaña parece más empinada a medida que se acerca.
Corolario de Frothingam.&lt;/p&gt;
&lt;p&gt;Parece que la montaña esté más cerca de lo que está.
LEY DE SHEDENHELM SOBRE LA MARCHA EN MONTAÑA.&lt;/p&gt;
&lt;p&gt;Todos los senderos tienen más tramos cuesta arriba que cuesta abajo, independientemente del sentido de la marcha.
LEY DEL MUS.&lt;/p&gt;
&lt;p&gt;El compañero siempre tiene la culpa.
LEY INDISCUTIBLE DE LOS CONTRATOS DEPORTIVOS.&lt;/p&gt;
&lt;p&gt;Cuanto mayor es la cantidad que figura en el contrato, menos eficaz es la temporada siguiente.
PRINCIPIO DE KNOX SOBRE LA CALIDAD DE LA ESTRELLA.&lt;/p&gt;
&lt;p&gt;Cuando traspasan a una superestrella a su equipo favorito, se apaga. Cuando su equipo traspasa a un desconocido inútil, inmediatamente se eleva al estrellato.
LEY DE HERTZBERG PARA CAMINAR SOBRE EL ALA.&lt;/p&gt;
&lt;p&gt;Nunca se suelte de donde esté agarrado hasta que no se haya agarrado a otra cosa.
LEYES DE DEAL SOBRE LA NAVEGACIÓN.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;La cantidad de viento variará en una relación inversamente proporcional al número y experiencia de las personas que lleve a bordo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No importa lo fuerte que sea la brisa cuando sale del muelle; en cuanto llegue al punto más alejado del puerto, el viento se quedará en calma.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Deportivismología-logía.&lt;/p&gt;
&lt;p&gt;LAMENTO DEL HINCHA SABIO.&lt;/p&gt;
&lt;p&gt;Los tontos entran precipitadamente… y consiguen los mejores asientos.
REGLA DE BREDA.&lt;/p&gt;
&lt;p&gt;En todos los espectáculos, las personas cuyos asientos están más lejos del pasillo son las que llegan tarde.
LEY DE MOSER SOBRE LOS DEPORTES ESPECTÁCULO.&lt;/p&gt;
&lt;p&gt;Las jugadas emocionantes siempre suceden cuando usted está mirando el marcador o ha salido a comprar palomitas.
LEY DE BOB SOBRE LOS DEPORTES TELEVISADOS.&lt;/p&gt;
&lt;p&gt;Si durante un partido cambia de un canal a otro para no ver los anuncios, en el segundo canal también habrá anuncios.
LEYES DE MURRAY SOBRE LA PISTA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;No hay nada tan malo que no se pueda empeorar despidiendo al entrenador.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El peor delantero centro es el que está en el campo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Un agente libre es todo menos eso.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El fútbol es un deporte en el que participan once buenos jugadores y el equipo de casa.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Todo lo que pueda ir al Madrid, irá.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;COMENTARIO DE LORD COHEN.&lt;/p&gt;
&lt;p&gt;La viabilidad de una operación no es el mejor indicativo de sus resultados.
LEYES DE TELESCO SOBRE LA ENFERMERÍA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Todas las intravenosas están al otro extremo del pasillo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La capacidad de un médico es inversamente proporcional a su tiempo disponible.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Existen dos tipos de esparadrapo: el que no se pega y el que no puede despegarse.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Todo el mundo quiere al mismo tiempo una inyección calmante.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Todos los que no quieren una inyección calmante cuando usted las ofreció, la quieren cuando pasa las pastillas para dormir.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE BARACH.&lt;/p&gt;
&lt;p&gt;Un alcohólico es aquel que bebe más que su médico.
ADVERTENCIA DE MATZ.&lt;/p&gt;
&lt;p&gt;Tenga cuidado con el médico que es muy hábil para salir de dificultades.
LEY DE SILVER SOBRE LOS MÉDICOS.&lt;/p&gt;
&lt;p&gt;Nunca cicatriza bien.
REGLA DE MATZ SOBRE LAS MEDICINAS.&lt;/p&gt;
&lt;p&gt;Una medicina es una sustancia que, cuando se inyecta a una rata, produce un informe científico.
AFORISMO DE COCHRANE.&lt;/p&gt;
&lt;p&gt;Antes de hacerse un análisis, decida que es lo que hará si sale:&lt;/p&gt;
&lt;p&gt;positivo.
negativo.
Si las dos respuestas son iguales, no se lo haga.&lt;/p&gt;
&lt;p&gt;LEY DE EDD SOBRE LA RADIOLOGÍA.&lt;/p&gt;
&lt;p&gt;Cuanto más fría esté la placa de las radiografías, más se la pegarán al cuerpo.
PRECEPTO DE BERNSTEIN.&lt;/p&gt;
&lt;p&gt;La flor nacional de los radiólogos es la evasiva.
Cortesía en carretera.&lt;/p&gt;
&lt;p&gt;LEY DE OLIVER SOBRE LA POSICIÓN.&lt;/p&gt;
&lt;p&gt;Vaya donde vaya, ahí está.
PRIMERA LEY DEL VIAJE.&lt;/p&gt;
&lt;p&gt;Siempre se tarda más en ir que en volver.
LEY DEL AVIÓN.&lt;/p&gt;
&lt;p&gt;Cuando tiene que hacer un transbordo, si el avión en el que va lleva retraso, el otro no lo lleva.
LEY DE KELLY SOBRE LA NAVEGACIÓN AÉREA.&lt;/p&gt;
&lt;p&gt;La información más importante de cualquier carta de navegación está en el doblez.
LEY DEL ABUELO CHARNOK.&lt;/p&gt;
&lt;p&gt;No sabrá lo que es blasfemar hasta que no aprenda a conducir.
LEY DE VILE SOBRE LA CARRETERA.&lt;/p&gt;
&lt;p&gt;Su coche gasta más gasolina y aceite que el de los demás.
PRINCIPIO DE PHILLIP.&lt;/p&gt;
&lt;p&gt;Conducir un vehículo de cuatro ruedas significa simplemente que puede quedarse atascado en los lugares más inverosímiles.
LEY DE HUMPHRIES SOBRE CICLISMO.&lt;/p&gt;
&lt;p&gt;El camino más corto es el que tiene las cuestas más empinadas.
LEY DEL CAMINO DE LA VIDA.&lt;/p&gt;
&lt;p&gt;Si todo viene hacia usted, es que se ha equivocado de carril.
LEYES DE ATHENA DE LA CORTESÍA AL VOLANTE.&lt;/p&gt;
&lt;p&gt;Si permite que alguien se ponga delante de usted:
1. El coche de delante será el último en atravesar un paso a nivel y usted se quedará sin poder moverse hasta que termine de pasar un tren largo y lento; o&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Los dos irán al mismo sitio y el otro ocupará la última plaza de aparcamiento libre.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;POSTULADO DE LEMAR SOBRE EL APARCAMIENTO.&lt;/p&gt;
&lt;p&gt;Si tuvo que dejar el coche a seis manzanas, encontrará dos huecos justo a la entrada del edificio.
LEY DE GRAY PARA LOS AUTOBUSES.&lt;/p&gt;
&lt;p&gt;Un autobús que no llega, sólo aparecerá cuando el pasajero potencial haya ido andando hasta un punto tan cercano al destino que ya no merezca la pena coger el autobús.
LEY DE McKEE.&lt;/p&gt;
&lt;p&gt;Cuando no tenga prisa, el semáforo se pondrá verde antes de para el coche.
LEY DE QUIGLEY.&lt;/p&gt;
&lt;p&gt;Un coche y un camión que se van a cruzar en una carretera desierta, se encontrarán siempre en el paso más estrecho.
PRIMERA LEY DEL TRÁFICO.&lt;/p&gt;
&lt;p&gt;El carril lento en el que ha estado parado tanto tiempo, empezará a moverse cuando usted se haya cambiado al otro.
SEGUNDA LEY DEL TRÁFICO.&lt;/p&gt;
&lt;p&gt;La hora de margen que tomó por el tráfico se quedará corta, porque se pasará hora y media en un atasco.
LEY DE REECE.&lt;/p&gt;
&lt;p&gt;La velocidad de un vehículo que se acerca es directamente proporcional al espacio de la zona de cruce.
LEY DE DREW SOBRE LA BIOLOGÍA EN LA AUTOPISTA.&lt;/p&gt;
&lt;p&gt;El primer bicho que se estrella contra un parabrisas, lo hace siempre a la altura de los ojos.
AXIOMA DE WINFIELD SOBRE EL ARTE DE DAR UNA DIRECCIÓN.&lt;/p&gt;
&lt;p&gt;La posibilidad de perderse es directamente proporcional al número de veces que le digan “no puedes perderte”.
LEY DE JEAN SOBRE LOS AUTOMÓVILES.&lt;/p&gt;
&lt;p&gt;Todo coche que se utilice como “segundo vehículo” se romperá en cuanto el otro tenga una avería.
LEYES DE BROMBERG SOBRE LA REPARACIÓN DE AUTOMÓVILES.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si puede localizar la pieza averiada, no tendrá herramientas para sacarla.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando pueda sacarla, en la tienda de repuestos le dirán que no la tienen ahora, pero que está pedida.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si en la tienda tienen existencias, es que no necesitaba cambiarla.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE MILLER SOBRE LOS SEGUROS.&lt;/p&gt;
&lt;p&gt;El seguro lo cubre todo, excepto lo que pasa.
PRINCIPIO DE MILSTEAD SOBRE LA CONDUCCIÓN.&lt;/p&gt;
&lt;p&gt;Si necesita parar un momento para retocarse el maquillaje, todos los semáforos estarán en verde.
LEYES DE BROMBERG SOBRE LA REPARACIÓN DEL MOTOR.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuando se presenta la necesidad, cualquier objeto o herramienta que tenga a mano se convierte en un martillo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Aunque la reparación sea pequeña, usted terminará lleno de grasa y aceite.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En caso necesario, pueden usarse indistintamente las herramientas en sistema métrico o en pulgadas.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Murpyhología doméstica.&lt;/p&gt;
&lt;p&gt;LEY DE O'REILLY SOBRE LA COCINA.&lt;/p&gt;
&lt;p&gt;La limpieza es algo casi imposible.
SIETE REGLAS DEL DESORDEN EN LA COCINA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Los aparatos multiusos no cumplen adecuadamente ninguna de sus funciones.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolario.&lt;/p&gt;
&lt;p&gt;Cuanto más caro sea el artefacto, menos se usará.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más sencillas sean las instrucciones (por ejemplo, “Presionar aquí”Wink, más difícil será abrir la caja.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si encuentra una receta de su abuela en un libro viejo, el ingrediente más importante será ilegible.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Corolario.&lt;/p&gt;
&lt;p&gt;Descubrirá que es ilegible sólo después de haber mezclado todos los demás ingredientes.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Una vez que se haya estropeado un guiso, cualquier cosa que añada para arreglarlo lo empeorará.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Siempre recibirá alabanzas por el plato más fácil de preparar.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ejemplo: Si hace “pato à l'orange” le felicitarán por las patatas asadas.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Su invitado será alérgico al único ingrediente que le costó trabajo encontrar.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuanto más tiempo y energía dedique a preparar un plato, más posibilidades tiene de que sus invitados se pasen la comida comentando los manjares que han tomado en otros sitios.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEYES DE TRABAJO DE LA COCINERA.&lt;/p&gt;
&lt;p&gt;Si no recuerda si ha sacado la carne del congelador, es que no lo ha hecho.
Si no recuerda si se ha dejado la cafetera enchufada, es que sí se la ha dejado.
Si no recuerda si tiene que comprar pan y huevos, es que no quedan.
Si no sabe si tiene suficiente dinero para invitar a su familia a comer fuera, es que no tiene.
LEYES DE ALICE HAMMOND SOBRE LA COCINA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Los soufflés suben y la crema queda bien batida sólo para la familia y para los comensales a los que se ve obligado a invitar.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El huevo podrido será el que ponga en la masa del pastel.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cualquier utensilio que acabe de poner en el lavavajillas lo necesitará inmediatamente para otra cosa; cualquier taza de medida que haya empleado para un líquido la necesitará inmediatamente después para un ingrediente seco.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El tiempo que se tarda en consumir una comida es inversamente proporcional al tiempo que usted invirtió en prepararla.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Haga lo que haga de cena, alguien lo habrá tomado a la hora de comer.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE LA FIESTA.&lt;/p&gt;
&lt;p&gt;Cuantas más cosas prepare, menos comerán los invitados.
LEY DE LA SEÑORA WEILER.&lt;/p&gt;
&lt;p&gt;Se puede comer cualquier cosa siempre que se parta en trocitos muy pequeños.
DEFINICIÓN DE FAUSNER.&lt;/p&gt;
&lt;p&gt;El trabajo doméstico es eso que no se nota a no ser que no se haya hecho.
LEY DE WALKER PARA EL TRABAJO DOMÉSTICO.&lt;/p&gt;
&lt;p&gt;Siempre hay más ropa para lavar que ropa limpia.
REFUTACIÓN DE CLIVE A LA LEY DE WALKER.&lt;/p&gt;
&lt;p&gt;Si está limpia, no es ropa.
LEY DE SKOFF.&lt;/p&gt;
&lt;p&gt;Un niño nunca derramará nada en un suelo sucio.
LEY DE VAN ROY.&lt;/p&gt;
&lt;p&gt;Un juguete irrompible sirve para romper otros.
LEYES DE WITZLING SOBRE EL COMPORTAMIENTO DE LA PROGENIE.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cualquier niño que habla sin parar en casa, se niega obstinadamente a abrir la boca cuando se le pide que diga una gracia delante de las visitas.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cualquier niño introvertido y tímido escogerá un lugar público y lleno de gente para ensayar a voz en grito su nuevo vocabulario (coño, joder, etc.).&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;COROLARIO DE FISKE SOBRE LOS ADOLESCENTES PARA LA LEY DE PARKINSON.&lt;/p&gt;
&lt;p&gt;El estómago se expande hasta alojar cantidades ingentes de porquerías.
PRINCIPIO DEL PLÁTANO.&lt;/p&gt;
&lt;p&gt;Si compra plátanos o aguacates antes de que estén maduros, no quedará ninguno para cuando estén maduros. Pero si los compra maduros, se pudren antes de que nadie se los coma.
LEY DE BALLANCE SOBRE LA RELATIVIDAD.&lt;/p&gt;
&lt;p&gt;La duración de un minuto depende del lado de la puerta del baño en que se encuentre.
POSTULADO DE BRITT SOBRE LAS PLANTAS.&lt;/p&gt;
&lt;p&gt;La esperanza de vida de una planta es inversamente proporcional al precio y directamente proporcional a la fealdad de la misma.
LEY DE MINTON SOBRE LA PINTURA.&lt;/p&gt;
&lt;p&gt;Todas las pinturas, sea cual sea su composición, se adhieren permanentemente a cualquier superficie (preparada o no) si caen sobre ella accidentalmente.
LEY DE LAS REPOSICIONES.&lt;/p&gt;
&lt;p&gt;Si ha visto sólo una vez una serie de televisión, cuando la vuelva a ver será una reposición del mismo capítulo.
LEY DE JONES SOBRE LA PROGRAMACIÓN DE TELEVISIÓN.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si sólo hay dos programas que merece la pena ver, serán a la misma hora.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El único programa nuevo que merece la pena ver lo suprimirán.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El programa que ha estado deseando ver toda la semana estará codificado.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PRINCIPIOS UNIVERSALES DE BESS.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Siempre suena el teléfono cuando usted está al otro lado de la puerta y no encuentra las llaves.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cogerá el aparato justo a tiempo para oír colgar a quien llamaba.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PROBLEMA DE KOVAC.&lt;/p&gt;
&lt;p&gt;Cuando se equivoca al marcar, nunca está comunicando.
DILEMA DE DINER.&lt;/p&gt;
&lt;p&gt;Las corbatas limpias atraen la sopa.
LEY DE THIESSEN SOBRE LA GASTRONOMÍA.&lt;/p&gt;
&lt;p&gt;La dureza de la mantequilla es directamente proporcional a la blandura de la tostada.
TEOREMA DE BELL.&lt;/p&gt;
&lt;p&gt;Cuando un cuerpo se sumerge en agua suena el teléfono.
LEY DE LA BOLSA DE LA COMPRA.&lt;/p&gt;
&lt;p&gt;La chocolatina que pensaba comerse por el camino siempre está en el fondo de la bolsa.
PRINCIPIO DE WOODSIDE SOBRE LA COMPRA.&lt;/p&gt;
&lt;p&gt;La bolsa que se rompe siempre es la de los huevos.
PRINCIPIO DE STITZER SOBRE LAS VACACIONES.&lt;/p&gt;
&lt;p&gt;Cuando esté haciendo el equipaje, meta la mitad de la ropa que había pensado y el doble de dinero.
LEY DE ESTHER.&lt;/p&gt;
&lt;p&gt;A la persona más exigente siempre le tocará la taza de café desconchada, el vaso con restos de pintura de labios o el pelo en la sopa.
LEY DE HOROWITZ.&lt;/p&gt;
&lt;p&gt;Siempre que ponga la radio, escuchará las últimas notas de su canción favorita.
LEY DE GERARD.&lt;/p&gt;
&lt;p&gt;Cuando tiene fondos en su cuenta corriente, tardan dos semanas en pasarle los cheques. Cuando no tiene fondos, se los pasan el mismo día.
LEY DE PANTUSO.&lt;/p&gt;
&lt;p&gt;El libro por el que acaba de pagar 7.800 pesetas saldrá mañana en edición de bolsillo.
LEYES DE RILEY SOBRE “LAS LEYES DE MURPHY”.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Las librerías que tienen el volumen I no saben nada del volumen II.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;En las librerías que tienen el volumen II se les ha agotado el volumen I.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Ed Murphy no conoce la existencia de ninguno de los dos libros.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE VILE SOBRE EL VALOR.&lt;/p&gt;
&lt;p&gt;Cuanto más caro es un artefacto, más lejos está el taller de reparaciones.
LEYES DE MURRAY.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;No le pregunte nunca a un peluquero si le hace falta un corte de pelo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No le pregunte nunca a un vendedor si su precio es ajustado.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE GLASER.&lt;/p&gt;
&lt;p&gt;Si la etiqueta dice “Talla única”, le quedará fatal a todo el mundo.
REGLAS DE GOLDENSTERN.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Contrate siempre a un abogado rico.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No le compre nada a un vendedor rico.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Consumidorología y el arte de vender.&lt;/p&gt;
&lt;p&gt;LEY DE HERBLOCK.&lt;/p&gt;
&lt;p&gt;Si es bueno, dejan de fabricarlo.
LEY DE GOLD.&lt;/p&gt;
&lt;p&gt;Si el zapato le queda bien, es feísimo.
LEYES DE HADLEY SOBRE LA COMPRA DE ROPA.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Si le gusta, no tienen su talla.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si le gusta y tienen su talla, no le sienta bien.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si le gusta y le sienta bien, es tan caro que no puede comprarlo.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Si le gusta, le sienta bien y se puede permitir el lujo de comprarlo, se romperá la primera vez que se lo ponga.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;PRINCIPIO DE FINMAN SOBRE LA SECCIÓN DE OPORTUNIDADES.&lt;/p&gt;
&lt;p&gt;Lo que usted quiere nunca está rebajado.
Corolario de Baker al Principio de la Sección de Oportunidades de Finman.&lt;/p&gt;
&lt;p&gt;Lo que puede comprar siempre es feo.
AXIOMA DE MADISON AVENUE DE McGOWAN.&lt;/p&gt;
&lt;p&gt;Si se anuncia que el precio de un artículo es “menos de 15.000″, se puede apostar la cabeza a que no costará 2.130.
REGLAS DE HERSHISER.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cualquier cosa que lleve la etiqueta “NUEVA” y/o “FÓRMULA PERFECCIONADA”, no lo es.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La etiqueta “NUEVA” y/o “FÓRMULA PERFECCIONADA”, significa que ha subido.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La etiqueta “COMPLETAMENTE NUEVO”, “TODO NUEVO” o “GRAN NOVEDAD”, significa que el precio se ha puesto por las nubes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE SINETO SOBRE EL CONSUMISMO.&lt;/p&gt;
&lt;p&gt;Una garantía de sesenta días es la promesa de que el objeto se autodestruirá el día sexagésimo primero.
LEY DE SAVIGNANO SOBRE LOS PEDIDOS POR CORREO.&lt;/p&gt;
&lt;p&gt;Si no escribe una carta de reclamación, no recibirá su pedido.
Si la escribe, recibirá sus artículos antes de que la carta llegue a su destino.&lt;/p&gt;
&lt;p&gt;LEY DE BERYL.&lt;/p&gt;
&lt;p&gt;El artículo sobre un producto en “La Revista del Consumidor” aparecerá justo una semana después de que lo haya comprado.
Corolarios.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;El que usted compró estará clasificado como “Inaceptable”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;El que estuvo a punto de comprar, pero no se decidió, recibirá la calificación de “El Mejor”.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE LEWIS.&lt;/p&gt;
&lt;p&gt;La gente compra cualquier cosa de la que se venda un sólo artículo por comprador.
Problemática.&lt;/p&gt;
&lt;p&gt;LEY DE SMITH.&lt;/p&gt;
&lt;p&gt;Ningún problema verdadero tiene solución.
LEY DE HOARE SOBRE LOS GRANDES PROBLEMAS.&lt;/p&gt;
&lt;p&gt;En cada problema grande hay un problema pequeño que lucha por salir.
LEY INVERSA DE SCHAINKER A LA LEY DE HOARE SOBRE LOS GRANDES PROBLEMAS.&lt;/p&gt;
&lt;p&gt;En cada problema pequeño hay un problema grande que lucha por salir.
OBSERVACIÓN DE BARUCH.&lt;/p&gt;
&lt;p&gt;Si todo lo que tiene es un martillo, cualquier cosa que vea le parecerá un clavo.
LEY DE BIONDI.&lt;/p&gt;
&lt;p&gt;Si su proyecto no funciona, investigue la parte que pensó que no tenía importancia.
REGLA ROMANA.&lt;/p&gt;
&lt;p&gt;El que afirma que no se puede hacer, no debe interrumpir al que lo está haciendo.
OBSERVACIÓN DE BLAIR.&lt;/p&gt;
&lt;p&gt;Los mejores proyectos realizados por hombres y por ratones, suelen ser casi iguales.
LEY DE SEAY.&lt;/p&gt;
&lt;p&gt;Nada sale nunca como se planeó
LEY DE RUCKERT.&lt;/p&gt;
&lt;p&gt;No hay nada tan pequeño que no pueda explotar violentamente.
LEY DE VAN HERPEN.&lt;/p&gt;
&lt;p&gt;La solución de un problema consiste en encontrar a alguien que lo resuelva.
LEY DE BAXTER.&lt;/p&gt;
&lt;p&gt;El error en la premisa aparecerá en la conclusión.
LEY DE McGEE.&lt;/p&gt;
&lt;p&gt;Es sorprendente el tiempo que se necesita para terminar algo en lo que no se está trabajando.
LEY DE SEVAREID.&lt;/p&gt;
&lt;p&gt;La causa principal de los problemas son las soluciones.
Cosmomurphyología.&lt;/p&gt;
&lt;p&gt;LEY DE LA VIDA.&lt;/p&gt;
&lt;p&gt;En cuanto se ponga a hacer lo que siempre ha deseado, se dará cuenta de que le apetece hacer otra cosa.
LEY DE OLIVIER.&lt;/p&gt;
&lt;p&gt;La experiencia es algo que se consigue cuando ya no se necesita.
OBSERVACIÓN DE GABITOL.&lt;/p&gt;
&lt;p&gt;Los sabios están satisfechos cuando descubren la verdad; los necios, cuando descubren la falsedad.
PRIMER PRINCIPIO DE AUTODETERMINACIÓN&lt;/p&gt;
&lt;p&gt;Si resiste, vencerá.
PRECEPTOS DE STEINER.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;El conocimiento que se fundamenta en la evidencia externa, no es fiable.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;La lógica no puede decidir nunca lo que es posible y lo que no lo es.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;LEY DE HOFFER.&lt;/p&gt;
&lt;p&gt;Cuando las personas son libres de hacer lo que quieran, suelen imitarse unas a otras.
SEGUNDA LEY DE BERRA.&lt;/p&gt;
&lt;p&gt;Cualquiera que sea popular está condenado a caer antipático.
OBSERVACIÓN DE KIERKEGARD.&lt;/p&gt;
&lt;p&gt;La vida sólo se comprende mirando hacia atrás, pero se debe vivir hacia delante.
Metaleyes.&lt;/p&gt;
&lt;p&gt;METALEY DE LOS MISERABLES.&lt;/p&gt;
&lt;p&gt;Todas las leyes, buenas, malas o indiferentes, se deben obedecer al pie de la letra.
POSTULADO DE PERSIG.&lt;/p&gt;
&lt;p&gt;El número de hipótesis que pueden explicar un fenómeno dado es infinito.
METALEY DE LILLY.&lt;/p&gt;
&lt;p&gt;Todas las leyes son simulacros de la realidad.
LEY DE DIGIOVANNI.&lt;/p&gt;
&lt;p&gt;El número de leyes se multiplicará hasta cubrir todo el espacio editorial disponible.
OBSERVACIÓN DE ROGERS SOBRE LAS LEYES.&lt;/p&gt;
&lt;p&gt;En una jerarquía burocrática, cuanto más se asciende en el escalafón, menos se perciben las Leyes de Murphy, las Leyes de Peter, etc.
POSTULADO POLÍTICO DE ANDRA.&lt;/p&gt;
&lt;p&gt;La fundación de un partido político señala la disolución del movimiento.
REGLA POLÍTICA DE MARX.&lt;/p&gt;
&lt;p&gt;En cuanto se hacen ricos, se vuelven conservadores.
PRECEPTO DE JAFFE.&lt;/p&gt;
&lt;p&gt;Es imposible conocer algunas cosas, pero es imposible saber cuáles son.
REGLA DE LAS PROMESAS POLÍTICAS.&lt;/p&gt;
&lt;p&gt;La verdad varía.
LEY DE LA DISTINCIÓN ARBITRARIA.&lt;/p&gt;
&lt;p&gt;Puede dividir cualquier cosa en tantas partes como desee.
Corolario.&lt;/p&gt;
&lt;p&gt;Todo se puede dividir en tantas partes como usted desee.
Comentario al corolario.&lt;/p&gt;
&lt;p&gt;En este caso, se puede considerar que todo es un subconjunto de cualquier cosa.
OBSERVACIÓN DE WALLACE.&lt;/p&gt;
&lt;p&gt;Todas las cosas se encuentran en estado de desmelene absoluto.
LEY DE WEAVER.&lt;/p&gt;
&lt;p&gt;Cuando varios periodistas van en el mismo taxi a cubrir una noticia, paga el que va delante.
Corolario de Doyle.&lt;/p&gt;
&lt;p&gt;Vayan los que vaya y pague quien pague, todos incluyen el precio de la carrera en su cuenta de gastos.
LEY DE MATSCH.&lt;/p&gt;
&lt;p&gt;Es mejor tener un horrible final que sufrir horrores sin fin.
PARADOJA DE TRISCHMANN.&lt;/p&gt;
&lt;p&gt;Una pipa proporciona tiempo al sabio para pensar y algo que llevarse a la boca al necio.
COMENTARIO DE CHURCHILL SOBRE EL HOMBRE.&lt;/p&gt;
&lt;p&gt;En ocasiones, el hombre tropieza con la verdad pero, casi siempre, evita caerse y sigue adelante.
LEY DE HALDANE.&lt;/p&gt;
&lt;p&gt;El universo no sólo es más misterioso de lo que imaginamos, sino que lo es más de lo que podemos imaginar.
LEY DE KERR-MARTIN.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Cuando tratan de resolver sus propios problemas, los enseñantes son de lo más conservadores.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cuando tratan de resolver problemas ajenos son extremadamente liberales.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;TEOREMA DE CHAPPAQUIDICK DE WHITE.&lt;/p&gt;
&lt;p&gt;Cuanto antes se anuncien las malas noticias y cuantos más detalles se den, mejor.&lt;/p&gt;</content><category term="Insightful"/><category term="murphy"/><category term="insightful"/><category term="wisdom"/><category term="Español"/></entry><entry><title>The Scale of the Universe - Interactive Animation</title><link href="https://alecor.net/content/2012/04/06/the-scale-of-the-universe-interactive-animation.html" rel="alternate"/><published>2012-04-06T00:00:00+01:00</published><updated>2010-12-05T19:30:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2012-04-06:/content/2012/04/06/the-scale-of-the-universe-interactive-animation.html</id><summary type="html">&lt;p&gt;Another beginning for useful content.&lt;/p&gt;</summary><content type="html">&lt;p&gt;One of the best interactive animations to visualize the relative size of things in our universe.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://htwins.net/scale2/"&gt;https://htwins.net/scale2/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><category term="How-to"/><category term="blogging"/><category term="publishing"/><category term="writing"/><category term="English"/></entry><entry><title>Stock Market Flash Crash - May 6th 2010</title><link href="https://alecor.net/content/2012/02/25/stock-market-flash-crash-may-6th-2010.html" rel="alternate"/><published>2012-02-25T00:00:00+00:00</published><updated>2012-02-25T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2012-02-25:/content/2012/02/25/stock-market-flash-crash-may-6th-2010.html</id><summary type="html">&lt;p&gt;Videos of real-time reactions to what happened on May 6th 2010 - famous stock market flash crash.&lt;/p&gt;</summary><content type="html">&lt;div style="text-align: center;"&gt;

    &lt;iframe width="640" height="390" src="https://www.youtube.com/embed/iYhMyPAbaGw" title="StockMarketFunding.com Covers &amp;quot;Flash Crash 2010&amp;quot; HD May 6th 2010 (High Quality)" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen&gt;&lt;/iframe&gt;

    &lt;iframe width="640" height="390" src="https://www.youtube.com/embed/veXmqd8SHqU" title="My Trading during the Stock Market Flash Crash May 6th, 2010 5/6/10" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen&gt;&lt;/iframe&gt;

&lt;/div&gt;</content><category term="Trading"/><category term="trading"/><category term="investing"/><category term="crash"/><category term="flash crash"/><category term="videos"/><category term="English"/></entry><entry><title>A New Beginning</title><link href="https://alecor.net/content/2010/12/03/a-new-beginning.html" rel="alternate"/><published>2010-12-03T10:20:00+00:00</published><updated>2010-12-05T19:30:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2010-12-03:/content/2010/12/03/a-new-beginning.html</id><summary type="html">&lt;p&gt;The story of the new beginning.&lt;/p&gt;</summary><content type="html">&lt;h1&gt;Starting again&lt;/h1&gt;
&lt;p&gt;I have gone through many iterations of blogs and websites - personal and professional with portfolios, but over time each of them were slowly left unattended.&lt;/p&gt;
&lt;p&gt;This is a new blank slate, where I will consolidate everything I had from before, and extend it - and hopefully - keep it going for the long term.&lt;/p&gt;</content><category term="Blog"/><category term="blogging"/><category term="publishing"/><category term="writing"/><category term="English"/></entry><entry><title>How to enable swap on Linux</title><link href="https://alecor.net/content/2010/12/03/how-to-enable-swap-on-linux.html" rel="alternate"/><published>2010-12-03T10:20:00+00:00</published><updated>2010-12-05T19:30:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2010-12-03:/content/2010/12/03/how-to-enable-swap-on-linux.html</id><summary type="html">&lt;p&gt;Enabling swap on Linux.&lt;/p&gt;</summary><content type="html">&lt;p&gt;To enable swap permanently on Linux, you can follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a swap file or partition: If you haven't already created a swap file or partition, you can use the fallocate command to create a swap file of a desired size. For example, to create a 2GB swap file, you can use the following command:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;fallocate&lt;span class="w"&gt; &lt;/span&gt;-l&lt;span class="w"&gt; &lt;/span&gt;2G&lt;span class="w"&gt; &lt;/span&gt;/swapfile
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Change the permissions of the swap file: You should change the permissions of the swap file to only allow root to read and write to it. You can use the &lt;code&gt;chmod&lt;/code&gt; command to do this:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;chmod&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;600&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;/swapfile
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Format the swap file: You should format the swap file as a swap area using the mkswap command:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;mkswap&lt;span class="w"&gt; &lt;/span&gt;/swapfile
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Add the swap file to the system: To enable the swap file permanently, you need to add it to the system's &lt;code&gt;/etc/fstab&lt;/code&gt; file. Open the file in a text editor with sudo privileges:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;nano&lt;span class="w"&gt; &lt;/span&gt;/etc/fstab
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;Add the following line at the end of the file to mount the swap file on boot:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;/swapfile&lt;span class="w"&gt; &lt;/span&gt;none&lt;span class="w"&gt; &lt;/span&gt;swap&lt;span class="w"&gt; &lt;/span&gt;sw&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Save and close the file.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Enable the swap file: To enable the swap file immediately, you can use the swapon command:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;sudo&lt;span class="w"&gt; &lt;/span&gt;swapon&lt;span class="w"&gt; &lt;/span&gt;/swapfile
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You can verify that the swap file has been enabled by running the free command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;free&lt;span class="w"&gt; &lt;/span&gt;-h
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;This command should show the amount of swap space available in addition to the system's RAM.&lt;/p&gt;</content><category term="How-to"/><category term="howto"/><category term="how-to"/><category term="English"/></entry><entry><title>How to retrieve list of public repos from user using Github's API</title><link href="https://alecor.net/content/2010/12/03/how-to-retrieve-list-of-public-repos-from-user-using-github-api.html" rel="alternate"/><published>2010-12-03T10:20:00+00:00</published><updated>2010-12-05T19:30:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2010-12-03:/content/2010/12/03/how-to-retrieve-list-of-public-repos-from-user-using-github-api.html</id><summary type="html">&lt;p&gt;How to programmatically retrieve the list of repos for a given user using the Github's API.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Example of doing this in Python using the requests library:&lt;/p&gt;
&lt;h2&gt;Prerequisite&lt;/h2&gt;
&lt;p&gt;Generate a personal access token on Github.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to your Github account settings&lt;/li&gt;
&lt;li&gt;Select "Developer settings"&lt;/li&gt;
&lt;li&gt;Then "Personal access tokens" and&lt;/li&gt;
&lt;li&gt;Generate a new token with "repo" scope.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Using the API&lt;/h2&gt;
&lt;p&gt;Once you have your personal access token, you can use the following code to retrieve a list of all public repositories for a user:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nn"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;YOUR_GITHUB_USERNAME&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;quot;YOUR_PERSONAL_ACCESS_TOKEN&amp;quot;&lt;/span&gt;

&lt;span class="n"&gt;url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;https://api.github.com/users/&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/repos?type=public&amp;quot;&lt;/span&gt;
&lt;span class="n"&gt;headers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Authorization&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;Token &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;token&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;repos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;repo&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;repos&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nb"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;name&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Replace &lt;code&gt;YOUR_GITHUB_USERNAME&lt;/code&gt; with your Github username, and &lt;code&gt;YOUR_PERSONAL_ACCESS_TOKEN&lt;/code&gt; with the personal access token you generated.&lt;/p&gt;
&lt;p&gt;This code sends a GET HTTP request to the &lt;strong&gt;Github API&lt;/strong&gt; to retrieve a list of public repositories for the specified user. The response is in JSON format, which we can parse using the &lt;code&gt;json()&lt;/code&gt; method. The code then loops through the list of repositories and prints the name of each repository.&lt;/p&gt;</content><category term="How-to"/><category term="howto"/><category term="how-to"/><category term="github"/><category term="github api"/><category term="English"/></entry><entry><title>Time perspective</title><link href="https://alecor.net/content/2010/12/03/time-perspective.html" rel="alternate"/><published>2010-12-03T10:20:00+00:00</published><updated>2010-12-05T19:30:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2010-12-03:/content/2010/12/03/time-perspective.html</id><summary type="html">&lt;p&gt;Time perspective.&lt;/p&gt;</summary><content type="html">&lt;div class="col-12"&gt;
&lt;iframe width="1280" height="720" src="https://www.youtube.com/embed/A3oIiH7BLmg" title="RSA ANIMATE: The Secret Powers of Time" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;</content><category term="How-to"/><category term="blogging"/><category term="publishing"/><category term="writing"/><category term="English"/></entry><entry><title>What motivates us</title><link href="https://alecor.net/content/2010/12/03/what-motivates-us.html" rel="alternate"/><published>2010-12-03T10:20:00+00:00</published><updated>2010-12-05T19:30:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2010-12-03:/content/2010/12/03/what-motivates-us.html</id><summary type="html">&lt;p&gt;Another beginning for useful content.&lt;/p&gt;</summary><content type="html">&lt;iframe width="1280" height="725" src="https://www.youtube.com/embed/u6XAPnuFjJc" title="RSA ANIMATE: Drive: The surprising truth about what motivates us" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen&gt;&lt;/iframe&gt;</content><category term="Insightful"/><category term="insightful"/><category term="motivational"/><category term="psychology"/><category term="social psychology"/><category term="English"/></entry><entry><title>Rules of Action by Zen Habits</title><link href="https://alecor.net/content/2010/12/03/rules-of-action-by-zen-habits.html" rel="alternate"/><published>2010-12-03T00:00:00+00:00</published><updated>2010-12-05T00:00:00+00:00</updated><author><name>alecordev</name></author><id>tag:alecor.net,2010-12-03:/content/2010/12/03/rules-of-action-by-zen-habits.html</id><summary type="html">&lt;p&gt;Rules of action.&lt;/p&gt;</summary><content type="html">&lt;p&gt;Too often we get stuck in inaction - the quagmire of doubt and perfectionism and distractions and planning that stops us from moving forward.&lt;/p&gt;
&lt;p&gt;And while I'm no proponent of a whirling buzz of activity, I also believe people get lost in the distractions of the world and lose sight of what's important, and how to actually accomplish their Something Amazing.&lt;/p&gt;
&lt;p&gt;And so today I'd like to humbly present a few little rules of action - just some small reminders, things I've found useful but by no means invented, common-sense stuff that is often not common enough.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Don't overthink. Too much thinking often results in getting stuck, in going in circles. Some thinking is good - it's good to have a clear picture of where you're going or why you're doing this - but don't get stuck thinking. Just do.&lt;/li&gt;
&lt;li&gt;Just start. All the planning in the world will get you nowhere. You need to take that first step, no matter how small or how shaky. My rule for motivating myself to run is: Just lace up your shoes and get out the door. The rest takes care of itself.&lt;/li&gt;
&lt;li&gt;Forget perfection. Perfectionism is the enemy of action. Kill it, immediately. You can't let perfect stop you from doing. You can turn a bad draft into a good one, but you can't turn no draft into a good draft. So get going.&lt;/li&gt;
&lt;li&gt;Don't mistake motion for action. A common mistake. A fury of activity doesn't mean you're doing anything. When you find yourself moving too quickly, doing too many things at once, this is a good reminder to stop. Slow down. Focus.&lt;/li&gt;
&lt;li&gt;Focus on the important actions. Clear the distractions. Pick the one most important thing you must do today, and focus on that. Exclusively. When you're done with that, repeat the process.&lt;/li&gt;
&lt;li&gt;Move slowly, consciously. Be deliberate. Action doesn't need to be done fast. In fact, that often leads to mistakes, and while perfection isn't at all necessary, neither is making a ridiculous amount of mistakes that could be avoided with a bit of consciousness.&lt;/li&gt;
&lt;li&gt;Take small steps. Biting off more than you can chew will kill the action. Maybe because of choking, I dunno. But small steps always works. Little tiny blows that will eventually break down that mountain. And each step is a victory, that will compel you to further victories.&lt;/li&gt;
&lt;li&gt;Negative thinking gets you nowhere. Seriously, stop doing that. Self doubt? The urge to quit? Telling yourself that it's OK to be distracted and that you can always get to it later? Squash those thoughts. Well, OK, you can be distracted for a little bit, but you get the idea. Positive thinking, as corny as it sounds, really works. It's self-talk, and what we tell ourselves has a funny habit of turning into reality.&lt;/li&gt;
&lt;li&gt;Meetings aren't action. This is a common mistake in management. They hold meetings to get things done. Meetings, unfortunately, almost always get in the way of actual doing. Stop holding those meetings!&lt;/li&gt;
&lt;li&gt;Talking (usually) isn't action. Well, unless the action you need to take is a presentation or speech or something. Or you're a television broadcaster. But usually, talking is just talking. Communication is necessary, but don't mistake it for actual action.&lt;/li&gt;
&lt;li&gt;Planning isn't action. Sure, you need to plan. Do it, so you're clear about what you're doing. Just do it quickly, and get to the actual action as quickly as you can.&lt;/li&gt;
&lt;li&gt;Reading about it isn't action. You're reading an article about action. Ironic, I know. But let this be the last one. Now get to work!&lt;/li&gt;
&lt;li&gt;Sometimes, inaction is better. This might be the most ironic thing on the list, but really, if you find yourself spinning your wheels, or you find you're doing more harm than good, rethink whether the action is even necessary. Or better yet, do this from the beginning - is it necessary? Only do the action if it is.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;“Talk doesn't cook rice.” – Chinese Proverb&lt;/p&gt;</content><category term="Insightful"/><category term="insightful"/><category term="English"/></entry></feed>