El documento habla sobre TypeScript y sus ventajas para el desarrollo de aplicaciones JavaScript. TypeScript es un superconjunto de JavaScript creado por Microsoft que agrega tipos estáticos y otras características. Esto hace que el código sea más fácil de comprender, mantener y probar, ayudando a prevenir errores y mejorar la productividad. Muchos frameworks como Angular y equipos importantes han adoptado TypeScript.
Swift sin hype y su importancia en el 2017 Software Guru
En esta presentación platicaremos de Swift y su futuro inmediato, las mejoras y las guías de diseño que esta siguiendo. Mostraremos herramientas relacionadas para los implementen en sus proyectos además de conocer frameworks que están hechos completamente en Swift.
Charla presentada para la Universidad Cenfotec, en el Colegio de Informáticos de Costa Rica. Marzo, 2014. La charla presenta una introducción a Ruby on Rails y cómo integrarlo con AngularJS
Este documento presenta un tutorial sobre HTML y HTML5. Proporciona una lista de tres integrantes y describe que el lenguaje HTML se puede crear y editar con cualquier editor de texto básico, y también existen editores WYSIWYG especializados para sitios web.
Este documento presenta Ruby on Rails, un framework web de código abierto basado en el lenguaje de programación Ruby. Explica que Ruby es un lenguaje orientado a objetos dinámico que motiva la productividad del programador, y que Rails promueve principios como convention over configuration y don't repeat yourself. También resume brevemente conceptos clave de desarrollo ágil como test-driven development, diseño incremental y programación en parejas.
Este documento describe las funciones y usos del programa Dreamweaver para crear páginas web de forma visual sin necesidad de codificar manualmente en HTML. También menciona 10 frameworks populares para el desarrollo de aplicaciones web como ASP.NET, Ruby on Rails, AngularJS, Django y otros. Finalmente, detalla los pasos para instalar Adobe Dreamweaver CC 2015 con un crack para su uso sin costo.
Presentación utilizada en el webinar de ASPgems sobre por qué Ruby on Rails es una buena opción. El webinar entero está aquí http://www.youtube.com/watch?v=oSlTXNjnp_M
El documento presenta el plan de estudios de una carrera de desarrollo de tecnologías informáticas dividido en 11 cuatrimestres. Cada cuatrimestre incluye diferentes materias con su respectivo número de créditos, acumulando un total de créditos por cuatrimestre. Las materias cubren temas como soporte en redes, sistemas, programación, circuitos digitales y orientación.
Slides utilizados durante la charla
"TDD desde las trincheras: teoría y lecciones aprendidas"
https://www.meetup.com/es-ES/Madrid-Scrum-User-Group/events/258185830/
Grabación de la charla: https://youtu.be/_oX7vvSQxI8
Swift sin hype y su importancia en el 2017 Software Guru
En esta presentación platicaremos de Swift y su futuro inmediato, las mejoras y las guías de diseño que esta siguiendo. Mostraremos herramientas relacionadas para los implementen en sus proyectos además de conocer frameworks que están hechos completamente en Swift.
Charla presentada para la Universidad Cenfotec, en el Colegio de Informáticos de Costa Rica. Marzo, 2014. La charla presenta una introducción a Ruby on Rails y cómo integrarlo con AngularJS
Este documento presenta un tutorial sobre HTML y HTML5. Proporciona una lista de tres integrantes y describe que el lenguaje HTML se puede crear y editar con cualquier editor de texto básico, y también existen editores WYSIWYG especializados para sitios web.
Este documento presenta Ruby on Rails, un framework web de código abierto basado en el lenguaje de programación Ruby. Explica que Ruby es un lenguaje orientado a objetos dinámico que motiva la productividad del programador, y que Rails promueve principios como convention over configuration y don't repeat yourself. También resume brevemente conceptos clave de desarrollo ágil como test-driven development, diseño incremental y programación en parejas.
Este documento describe las funciones y usos del programa Dreamweaver para crear páginas web de forma visual sin necesidad de codificar manualmente en HTML. También menciona 10 frameworks populares para el desarrollo de aplicaciones web como ASP.NET, Ruby on Rails, AngularJS, Django y otros. Finalmente, detalla los pasos para instalar Adobe Dreamweaver CC 2015 con un crack para su uso sin costo.
Presentación utilizada en el webinar de ASPgems sobre por qué Ruby on Rails es una buena opción. El webinar entero está aquí http://www.youtube.com/watch?v=oSlTXNjnp_M
El documento presenta el plan de estudios de una carrera de desarrollo de tecnologías informáticas dividido en 11 cuatrimestres. Cada cuatrimestre incluye diferentes materias con su respectivo número de créditos, acumulando un total de créditos por cuatrimestre. Las materias cubren temas como soporte en redes, sistemas, programación, circuitos digitales y orientación.
Slides utilizados durante la charla
"TDD desde las trincheras: teoría y lecciones aprendidas"
https://www.meetup.com/es-ES/Madrid-Scrum-User-Group/events/258185830/
Grabación de la charla: https://youtu.be/_oX7vvSQxI8
En está charla trato de mostrar cómo la tecnología produce cambios profundos en la sociedad, y qué herramientas se están usando para hacerlo posible. Temas como Internet of Things, Big Data y Cloud han llegado gracias a una tormenta perfecta de factores que los hacen posibles.
Slides usados durante la charla "Javascript Kata: aplicando clean code y buenas prácticas en vivo" https://www.meetup.com/es-ES/Front-end-Developers-Madrid/events/250409421/
Micro Frontends: Rompiendo el monolito en las aplicaciones WebBelatrix Software
Los microservicios son el estilo arquitectural de moda, pues nacieron para facilitar el mantenimiento y crecimiento de grandes aplicaciones monolíticas en el backend. Ahora nos hemos dado cuenta de que es posible aplicar algunos de sus principios a frontend, con resultados muy interesantes.
A continuación, te presentamos algunos de los temas específicos que se exponen:
¿Cómo nacen los microservicios?
¿Por qué nos olvidamos de dividir el frontend? ¿Qué es y cómo nace el concepto de Micro Frontends?
Técnicas para implementar Micro Frontends.
Mi experiencia con Micro Frontends.
Conclusiones y recomendaciones.
Este documento habla sobre cómo trabajar con código legado de manera efectiva. Explica que el código legado es código viejo que ha estado en producción por mucho tiempo y es difícil de mantener. Recomienda usar la técnica de "Cover and Modify" para hacer cambios, la cual implica identificar puntos de cambio, encontrar puntos de prueba, romper dependencias mediante "seams", escribir pruebas y luego hacer cambios y refactorización. Concluye que se puede trabajar código legado de forma metódica aplicando refactorización automática siempre
Este documento presenta una introducción a JavaScript para desarrolladores de SharePoint. Explica brevemente la historia de JavaScript en SharePoint y sus beneficios. También resume las principales características de JavaScript como lenguaje de programación y las opciones disponibles en SharePoint como JSOM, REST API y JSLINK. Además, menciona algunos frameworks y herramientas populares para desarrollo con JavaScript.
Sesión presentada en el ScrumDay Perú 2018, donde comparto como DevOps va mas allá de la automatización y que una efectiva implementación del enfoque debe tener en cuenta factores humanos como el sesgo cognitivo, el ego, y la forma en que las personas de diferente background interactúan entre sí.
Vivencias desarrollando cocos2d para iPhone. Incluye partes técnicas, partes de administración, lo importante del trabajo duro y la ejecución comparado con las ideas, y más.
Este documento presenta los principios SOLID de diseño de software, los cuales incluyen: responsabilidad única, abierto/cerrado, sustitución de Liskov, segregación de interfaz e inversión de dependencias. Explica que estos principios mejoran la escalabilidad, mantenibilidad y evolución del código. También describe cómo Typescript permite aplicar completamente estos principios en JavaScript al agregar características como interfaces.
Este documento resume la historia y experiencia de 12 años gestionando el sitio web Diariomotor con WordPress. Comenzó en 2005 con 4 amigos hablando de coches y ahora recibe 250,000 visitas diarias. A lo largo de los años, el sitio ha crecido experimentando con formatos editoriales y publicidad segmentada. WordPress ha sido la plataforma ideal debido a su comunidad de desarrolladores y capacidad de personalización. Sin embargo, requiere un mantenimiento constante de seguridad, rendimiento y actualizaciones. En el futuro, Diariomotor
Mike, un experimentado desarrollador de Jenkins, discute con su nieto Timmy, un recién graduado, sobre sus diferentes enfoques de DevOps y NoOps. Timmy defiende el enfoque NoOps de su startup basado en microservicios y servicios en la nube, mientras que Mike se mantiene fiel a su enfoque tradicional de DevOps con pipelines, contenedores y automatización de procesos de CI/CD. Al final, ambos reconocen que DevOps y NoOps no son conceptos opuestos, sino que NoOps es simplemente una evolución tecn
DevopsDays Medellín 2020 es una conferencia sobre DevOps que se llevará a cabo en Medellín, Colombia del 30 al 31 de julio de 2020. La conferencia promueve la participación en redes sociales usando hashtags como #DevOpsDaysMDE. El documento incluye información sobre patrocinadores y aliados de la conferencia.
Este documento presenta los fundamentos de la programación orientada a objetos. Explica conceptos clave como clases, métodos, atributos, encapsulamiento, herencia e interfaces. También cubre temas como código limpio, nombres significativos y tamaño apropiado de funciones. El objetivo es que los estudiantes identifiquen los principios básicos de POO para desarrollar aplicaciones de software de manera efectiva.
El documento habla sobre Visual Studio Codespaces, que permite la edición de código en la nube de forma accesible desde cualquier lugar. Ofrece beneficios como datos centralizados, escalabilidad, actualizaciones automáticas y administración fácil. Incluye alternativas como Repl.it, Github Codespaces y Amazon Cloud9.
Presentación del meetup de "Gasteiz Developers" acerca de cuidar el código, guiados por el libro "Clean Code: A Handbook of Agile Software Craftsmanship" de Robert C. Martin
Refactorizando Pccomponentes.com con SymfonyMario Marín
Partimos de un reto: cómo cambiar una web con millones de visitas, con un entorno en constante cambio, con una deuda técnica crítica y un equipo aumentando en número, en procesos para la generación de software de manera automatizada, documentada, probada y coordinada para la consecución de nuestras metas.
En esta charla se presenta el caso práctico de la implantación de Symfony como pieza fundamental del puzzle y la integración continua como camino a seguir. Pruebas, integración, bundles, bases de datos, rendimiento... Aspectos claves para la consecución de nuestros objetivos.
Este documento resume una presentación sobre el desarrollo de aplicaciones para Firefox OS. Se explica que todo está construido con HTML, CSS y JavaScript, y que para crear aplicaciones solo se necesita definir un manifiesto y decidir si se distribuyen de forma alojada o empaquetada. También se introducen nuevas APIs para acceder a hardware como el marcador y las notificaciones push, y se anima a los desarrolladores a aprovechar las capacidades offline de las aplicaciones web.
Desarrollo web el mejor aliado del Marketing DigitalMarta Soler
El documento discute las consideraciones al elegir una plataforma de gestión de contenidos para proyectos digitales. Recomienda considerar si usar una solución de código abierto o privada dependiendo de los requisitos, e integrar soluciones existentes en lugar de desarrollar todo desde cero. También enfatiza la importancia de contratar un desarrollador experto que pueda mantener el sitio a largo plazo y cumplir con los estándares de rendimiento, accesibilidad y seguridad.
Este documento presenta las lecciones aprendidas por un desarrollador sobre el uso de Docker y Kubernetes. Explica que es importante tener conocimientos básicos en diferentes áreas para resolver problemas de forma ágil. También describe algunas técnicas como usar Docker compose para ejecutar servicios dependientes localmente, inspeccionar logs y entrar en contenedores para depurar, y montar configuraciones como volúmenes en Kubernetes. El objetivo es compartir recetas y consejos prácticos basados en la experiencia del autor.
Slides from presentation about Docker and dotnet for Dotnet Baires community.
Source code used during the talk can be found here https://github.com/leomicheloni/dotnet-docker-azure
En está charla trato de mostrar cómo la tecnología produce cambios profundos en la sociedad, y qué herramientas se están usando para hacerlo posible. Temas como Internet of Things, Big Data y Cloud han llegado gracias a una tormenta perfecta de factores que los hacen posibles.
Slides usados durante la charla "Javascript Kata: aplicando clean code y buenas prácticas en vivo" https://www.meetup.com/es-ES/Front-end-Developers-Madrid/events/250409421/
Micro Frontends: Rompiendo el monolito en las aplicaciones WebBelatrix Software
Los microservicios son el estilo arquitectural de moda, pues nacieron para facilitar el mantenimiento y crecimiento de grandes aplicaciones monolíticas en el backend. Ahora nos hemos dado cuenta de que es posible aplicar algunos de sus principios a frontend, con resultados muy interesantes.
A continuación, te presentamos algunos de los temas específicos que se exponen:
¿Cómo nacen los microservicios?
¿Por qué nos olvidamos de dividir el frontend? ¿Qué es y cómo nace el concepto de Micro Frontends?
Técnicas para implementar Micro Frontends.
Mi experiencia con Micro Frontends.
Conclusiones y recomendaciones.
Este documento habla sobre cómo trabajar con código legado de manera efectiva. Explica que el código legado es código viejo que ha estado en producción por mucho tiempo y es difícil de mantener. Recomienda usar la técnica de "Cover and Modify" para hacer cambios, la cual implica identificar puntos de cambio, encontrar puntos de prueba, romper dependencias mediante "seams", escribir pruebas y luego hacer cambios y refactorización. Concluye que se puede trabajar código legado de forma metódica aplicando refactorización automática siempre
Este documento presenta una introducción a JavaScript para desarrolladores de SharePoint. Explica brevemente la historia de JavaScript en SharePoint y sus beneficios. También resume las principales características de JavaScript como lenguaje de programación y las opciones disponibles en SharePoint como JSOM, REST API y JSLINK. Además, menciona algunos frameworks y herramientas populares para desarrollo con JavaScript.
Sesión presentada en el ScrumDay Perú 2018, donde comparto como DevOps va mas allá de la automatización y que una efectiva implementación del enfoque debe tener en cuenta factores humanos como el sesgo cognitivo, el ego, y la forma en que las personas de diferente background interactúan entre sí.
Vivencias desarrollando cocos2d para iPhone. Incluye partes técnicas, partes de administración, lo importante del trabajo duro y la ejecución comparado con las ideas, y más.
Este documento presenta los principios SOLID de diseño de software, los cuales incluyen: responsabilidad única, abierto/cerrado, sustitución de Liskov, segregación de interfaz e inversión de dependencias. Explica que estos principios mejoran la escalabilidad, mantenibilidad y evolución del código. También describe cómo Typescript permite aplicar completamente estos principios en JavaScript al agregar características como interfaces.
Este documento resume la historia y experiencia de 12 años gestionando el sitio web Diariomotor con WordPress. Comenzó en 2005 con 4 amigos hablando de coches y ahora recibe 250,000 visitas diarias. A lo largo de los años, el sitio ha crecido experimentando con formatos editoriales y publicidad segmentada. WordPress ha sido la plataforma ideal debido a su comunidad de desarrolladores y capacidad de personalización. Sin embargo, requiere un mantenimiento constante de seguridad, rendimiento y actualizaciones. En el futuro, Diariomotor
Mike, un experimentado desarrollador de Jenkins, discute con su nieto Timmy, un recién graduado, sobre sus diferentes enfoques de DevOps y NoOps. Timmy defiende el enfoque NoOps de su startup basado en microservicios y servicios en la nube, mientras que Mike se mantiene fiel a su enfoque tradicional de DevOps con pipelines, contenedores y automatización de procesos de CI/CD. Al final, ambos reconocen que DevOps y NoOps no son conceptos opuestos, sino que NoOps es simplemente una evolución tecn
DevopsDays Medellín 2020 es una conferencia sobre DevOps que se llevará a cabo en Medellín, Colombia del 30 al 31 de julio de 2020. La conferencia promueve la participación en redes sociales usando hashtags como #DevOpsDaysMDE. El documento incluye información sobre patrocinadores y aliados de la conferencia.
Este documento presenta los fundamentos de la programación orientada a objetos. Explica conceptos clave como clases, métodos, atributos, encapsulamiento, herencia e interfaces. También cubre temas como código limpio, nombres significativos y tamaño apropiado de funciones. El objetivo es que los estudiantes identifiquen los principios básicos de POO para desarrollar aplicaciones de software de manera efectiva.
El documento habla sobre Visual Studio Codespaces, que permite la edición de código en la nube de forma accesible desde cualquier lugar. Ofrece beneficios como datos centralizados, escalabilidad, actualizaciones automáticas y administración fácil. Incluye alternativas como Repl.it, Github Codespaces y Amazon Cloud9.
Presentación del meetup de "Gasteiz Developers" acerca de cuidar el código, guiados por el libro "Clean Code: A Handbook of Agile Software Craftsmanship" de Robert C. Martin
Refactorizando Pccomponentes.com con SymfonyMario Marín
Partimos de un reto: cómo cambiar una web con millones de visitas, con un entorno en constante cambio, con una deuda técnica crítica y un equipo aumentando en número, en procesos para la generación de software de manera automatizada, documentada, probada y coordinada para la consecución de nuestras metas.
En esta charla se presenta el caso práctico de la implantación de Symfony como pieza fundamental del puzzle y la integración continua como camino a seguir. Pruebas, integración, bundles, bases de datos, rendimiento... Aspectos claves para la consecución de nuestros objetivos.
Este documento resume una presentación sobre el desarrollo de aplicaciones para Firefox OS. Se explica que todo está construido con HTML, CSS y JavaScript, y que para crear aplicaciones solo se necesita definir un manifiesto y decidir si se distribuyen de forma alojada o empaquetada. También se introducen nuevas APIs para acceder a hardware como el marcador y las notificaciones push, y se anima a los desarrolladores a aprovechar las capacidades offline de las aplicaciones web.
Desarrollo web el mejor aliado del Marketing DigitalMarta Soler
El documento discute las consideraciones al elegir una plataforma de gestión de contenidos para proyectos digitales. Recomienda considerar si usar una solución de código abierto o privada dependiendo de los requisitos, e integrar soluciones existentes en lugar de desarrollar todo desde cero. También enfatiza la importancia de contratar un desarrollador experto que pueda mantener el sitio a largo plazo y cumplir con los estándares de rendimiento, accesibilidad y seguridad.
Similar a Mas alla de javascript con typescript (20)
Este documento presenta las lecciones aprendidas por un desarrollador sobre el uso de Docker y Kubernetes. Explica que es importante tener conocimientos básicos en diferentes áreas para resolver problemas de forma ágil. También describe algunas técnicas como usar Docker compose para ejecutar servicios dependientes localmente, inspeccionar logs y entrar en contenedores para depurar, y montar configuraciones como volúmenes en Kubernetes. El objetivo es compartir recetas y consejos prácticos basados en la experiencia del autor.
Slides from presentation about Docker and dotnet for Dotnet Baires community.
Source code used during the talk can be found here https://github.com/leomicheloni/dotnet-docker-azure
Docker es un software para gestionar contenedores ligeros que aíslan procesos. Una imagen es un molde para crear contenedores, mientras que un contenedor es una instancia de ejecución de una imagen. Puedo crear mis propias imágenes mediante Dockerfiles y luego distribuir aplicaciones mediante imágenes que incluyen las dependencias.
Este documento explica conceptos clave sobre Docker como contenedores, imágenes, registros y orquestación. Un contenedor es un proceso aislado con su propio sistema de archivos y red. Una imagen es un molde inmutable para crear contenedores. Docker permite empaquetar aplicaciones con sus dependencias para distribuirlas fácilmente. La orquestación como Kubernetes es necesaria para administrar grandes cantidades de contenedores.
Leonardo Micheloni presenta Cosmos DB, un servicio de base de datos como servicio de Microsoft Azure. Cosmos DB ofrece almacenamiento de datos NoSQL a escala global con replicación automática en múltiples regiones y niveles de consistencia personalizables. Permite almacenar datos en formatos como documentos, grafos y clave-valor y ofrece SDKs para varios lenguajes de programación.
Slides from talk about NodeMCU + IoThub + Stream Analytics + CosmosDb
https://www.meetup.com/es-ES/IoT-un-mundo-conectado/events/247094054/
Sample Code is here https://github.com/leomicheloni/NodeMCU-Azure
The document discusses blockchain technology, smart contracts, and Azure. It provides an overview of blockchain as a distributed database that records transactions in blocks that are digitally signed. Blockchain solves issues with centralized systems like banks by allowing for validation across a network without intermediaries. Examples of blockchain applications mentioned include cryptocurrency, proof of ownership, supply chain management, and IoT. The document also discusses how smart contracts can automate transactions through code and outlines some non-monetary uses like property records. Finally, it notes that Microsoft Azure provides tools to build blockchain applications.
Infografia TCP/IP (Transmission Control Protocol/Internet Protocol)codesiret
Los protocolos son conjuntos de
normas para formatos de mensaje y
procedimientos que permiten a las
máquinas y los programas de aplicación
intercambiar información.
Uso de las Tics en la vida cotidiana.pptx231485414
Las Tecnologías de la Información y las Comunicaciones (TIC), son el conjunto de recursos, herramientas, equipos, programas informáticos, aplicaciones, redes y medios.
LA GLOBALIZACIÓN RELACIONADA CON EL USO DE HERRAMIENTAS.pptxpauca1501alvar
Explica cómo las tecnologías digitales han facilitado e impulsado la globalización al eliminar barreras geográficas y permitir un flujo global sin precedentes de información, bienes, servicios y capital. Se describen los impactos de las herramientas digitales en áreas como la comunicación global, el comercio electrónico internacional, las finanzas y la difusión cultural. Además, se mencionan los beneficios como el crecimiento económico y el acceso a la información, así como los desafíos como la desigualdad y el impacto ambiental. Se concluye que la globalización y las herramientas digitales se refuerzan mutuamente, promoviendo una creciente interdependencia mundial.
El uso de las TIC en la vida cotidiana.pptxjgvanessa23
En esta presentación, he compartido información sobre las Tecnologías de la Información y la Comunicación (TIC) y su aplicación en diversos ámbitos de la vida cotidiana, como el hogar, la educación y el trabajo.
He explicado qué son las TIC, las diferentes categorías y sus respectivos ejemplos, así como los beneficios y aplicaciones en cada uno de estos ámbitos.
Espero que esta información sea útil para quienes la lean y les ayude a comprender mejor las TIC y su impacto en nuestra vida cotidiana.
Presentación realizada en el #Collabdays #Madrid 2024 donde traté las funcionalidades de Gobierno que incorpora ShrePoint Premium para facilitar la adopción de Copilot para Microsoft 365: Controles de Acceso Restringido | Acceso Condicional Granular | Bloqueo de descarga de archivos | Gestión del Ciclo de Vida de Sitios | Acciones recientes en Sitios de SharePoint | Informe de cambios
La inteligencia artificial sigue evolucionando rápidamente, prometiendo transformar múltiples aspectos de la sociedad mientras plantea importantes cuestiones que requieren una cuidadosa consideración y regulación.
9. @leomicheloni
Microsoft 2012
■ Respuesta al desarrollo de grandes aplicaciones
■ Estricto superset de ECMAScript 2015
■ Una app Javascript es una app Typescript válida
■ Ir por delante de la especificación de Javascript
■ Open source (Apache)
■ Mantener la experiencia actual
19. @leomicheloni
Typos estáticos
“The more type definitions I was putting into the code,
the more often I was noticing that it was saving me
from wasting time on manually debugging stupid bugs
in the console”
20. @leomicheloni
¿Y esto qué nos aporta?
■ Facilidad de comprensión del código
■ Facilidad de refactor
■ Detección temprana de errores
■ Velocidad en el Desarrollo
■ Facilita los merges
■ Puedo confiar en mi código en runtime
■ Posibilidad de utilizar patrones POO
■ SOLID
24. @leomicheloni
Código más fácil de comprender
■ ¿Qué argumentos acepta?
■ ¿Qué valores retorna?
■ ¿Qué datos requiere?
■ ¿De qué tipo son?
console.log(article)
25. @leomicheloni
Código más fácil de refactorizar
■ Renaming
∘ Find and replace
∘ Comprobación semántica
■ Promoción de tipos
■ Extracción de miembros
26. @leomicheloni
Código más fácil de desarrollar
■ Evolución del código más segura
■ Utilización de patrones más simple
■ Definición de interfaces con otros developers
27. @leomicheloni
Test más útiles
■ No necesitamos test que comprueben tipos
■ Nos focalizamos en el negocio
■ Podemos hacer TDD
29. @leomicheloni
Preocupaciones
■ Si usamos Typescript no vamos a conseguir gente capacitada
■ El onboarding puede llevar más tiempo
■ React / Redux / Mi framework no soporta Typescript
■ No se puede reutilizar código Javascript en Typescript
■ No quiero atarme a una tecnología efímera
35. @leomicheloni
Conclusiones
■ Typescript me ayuda a detectar errores temprano
■ Typescript me da más herramientas para utilizar prácticas de desarrollo
■ Prácticamente todos FW soportan Typescript
■ Puedo comenzar a utilizarlo paulatinament
hacer software es complejo
Ciclos iterativos
Antes usábamos cascada
Tratamos de anticiparnos a estas cosas
Aplicaciones que crecen
Prácticas de desarrollo
Grande libros
Javascript no está pensando para grandes aplicaciones
Nació como un lenguaje de scripting
Se ejecuta en cualquier entorno que ejecute javascript
Browser
V8
Por ejemplo Vscode es multiplataforma
Está escripto con typescript
TypeScript advantages
1. Code easier to understand
Usually when you work on a piece of code, for example a function code, to understand it fully you need to grasp:
What arguments does it accept?
What value does it return?
What external data does it require?
What does it do with these arguments and external data in order to produce the return value?
In dynamically typed languages, very often it is difficult to answer the first three questions. If a function receives article argument, what exactly is it? Is it an object with some article attributes? What exact attributes are there? Is there an article.title or article.name ? Can I always assume that article.title exists? How about article.isPublished? I might know that this attribute is merged into the article object in most of the places of the app, but can I be sure, that it is always present in this spot as well?
To answer all of those questions, usually you’d need to do one of the following:
a) put a console.log(article), run the script in your browser, (maybe click through the UI a bit), and read the log;
b) see where the function is used and from there track down what data is put into all of its occurrences;
c) ask your colleague that recently had been working on this code (while hoping that they are still alive, online, and remember that code);
d) assume that article is like what you think it is, and just hope it works.
Does that sound familiar to you?
To me, that sounds like a typical web dev workflow in any dynamically typed language like JS, PHP, Ruby, Python, Elixir.
In statically typed languages like TypeScript, you get answers to all of the above questions immediately from your IDE and compiler. No longer you need to look through entire code base, keep bugging your workmates with questions, or risk having bugs on production.
2. Code easier and faster to implement
Typically, when you have to create a new feature or a new component, your workflow probably looks something like this:
Bootstrap the component function, make up its constructor arguments, write the remaining code.
If it requires any external or sophisticated data (like user or articles), guess how will it look like, keep it in your own memory and use it like that in the code.
Put the component into your app and pass props into it.
Test it, either manually or with unit tests. (You need to make sure that it receives the props it should have and that it works how it should work.)
If something isn’t right, go back to your code, try figuring out what’s wrong with it, fix it, and go back to step no. 4.
In TypeScript, it is similar, but easier and quicker:
Bootstrap the component function, define its’ type definition, and implement it.
If it requires any external or sophisticated data, look up their interfaces and reuse them (fully or partially).
Put the component into your app and pass props into it.
That’s it. (If you matched the typedefs correctly between the caller and the callee, everything should work flawlessly. The only thing you have to test now is the actual business logic of your component.)
Thus, whenever you write code in TypeScript, not only it is more readable and less error-prone, but mainly, just easier to reason about.
3. Code easier to refactor
There’s often quite a lot of things you’d like to refactor, but because they touch so many things and files, you’re just too afraid of changing them.
In TypeScript, such things can often be refactored with just one click of “Rename Symbol” command in your IDE.
In dynamically typed languages, the best thing you can get to help you with refactoring multiple files at the same time is Search & Replace with RegExp.
In statically typed languages, Search & Replace isn’t that needed anymore. With IDE commands like “Find All Occurrences” and “Rename Symbol”, you can see all occurrences in the app of the given function, class, or property of an object interface.
Whenever you want to improve your build system a bit, rename your components, change your user object, or remove a deprecated attribute, you don’t need to be afraid of breaking things anymore. TypeScript will help you finding all the usages of the refactored bit, renaming it, and alerting you with a compile error in case your code has any type mismatches after the refactor.
4. Less bugs
Throughout many years of front-end web development, I have noticed that I could save up around ~50% of my time in bug fixing just by having somebody sitting next to me that would immediately yell at me whenever I was doing a typo, using a value that might be null, or passing an object into a place where it should be an array instead.
I’m happy to say that I finally met that buddy: it is called TypeScript.
Thanks to it, it is now way more difficult to write invalid code. If it compiles, you might be quite sure that it actually works.
5. Less boilerplate tests
When you are sure your variables are passed correctly into all given places, you don’t need to test all of it that much anymore.
Instead of writing simple boilerplate unit/integration tests, you can focus more on testing business logic of your app, instead of testing whether your function arguments are being passed between each other correctly.
Less tests means shorter time to develop new features, and a smaller codebase, which in turn is less complicated, less error-prone and easier to maintain.
6. Code easier to merge
New junior developer in your team has just issued a PR introducing new code. At a first glance it all looks o’right: the code looks good, the unit tests are there, everything passes green.
Can you be sure at this moment that it works though? What if it doesn’t have proper unit tests? (Yeh. Let’s meet the reality folks, a lot of us still don’t write sufficient number of them.) Will you just trust the PR creator? Or will you focus your precious 5 min to actually run the code on your own and test it?
If you have TypeScript in your toolchain, it gives you another assurance check: the typedef compilation check.
If the code looks good, the unit tests are there, and the whole thing compiles, now you can be pretty sure, that the whole thing works.
TypeScript makes it easier to trust other developers. It might improve the pace with which you review and merge PRs.
(The same goes the other way: thanks to type definitions, for new developers it is easier to see what other people’s portions of code are really doing, without the need of deep diving into it or running it by themselves.)
7. Aids the developer in having the correct workflow
When writing code in statically typed languages, you first need to think about the types of the data you’ll receive, and then about the type of data you want to produce. Usually only after that you sit down to the actual implementation.
Many people will bet their life that this is the correct coding workflow.
For example, whenever you develop an algorithm, you should first think about its’ theoretical formula, and then implement it.
Or, whenever you do TDD, you first need to think how your code will work in reality (what data will it receive and what data will it produce), write it as tests, and then implement the actual code.
Same thing applies to TypeScript. It encourages you to think about the interface of your code before sitting down to its’ internal implementation.