Un poco mas de UML

Este blog sera un poco mas en los diferentes diagramas de UML, cubriré 3, y un poco de conclusiones de mi parte.

Diagramas de estado

Como dice su nombre sirven para representar el estado de de un sistema en un numero finito de tiempo. Es tan sencillo como suena es simplemente mediante un diagrama representar los eventos que hacen que el sistema cambie de estado, al principio podría parecer que seria similar a una linea del tiempo donde solo avanzamos en linea recta pero hay varias posibilidades:

  • Lo primero es que usamos dos puntos, el primero es para marcar un inicio y el otro es el mismo pero dentro de otro circulo con solamente su contorno siendo este el que marca el final del diagrama.
  • Después los estados son representados, por lo general, con rectángulos y los eventos que los cambian son flechas.
  • Esto es lo mas sencillo para representar un diagrama, como ya dije hay mas cosas como que puedes hacer que un evento obtenga dos estados distintos o no salir de un estado, estados compuestos, etc. Si quieres saber más de esto entra a esta página que de hecho es de mis preferidas para buscar información de software.

Package Diagram

Estos diagramas son los mas complejos ya que sirve para hacer mas simples diagramas de clase muy complejos, estos utilizan flechas para carpetas en las que se encuentran clases para que el sistema funcione. Sinceramente no logre hacer un texto que lo explique mejor o mas sencillo que esta pagina, por desgracia no encontré contenido en español que lo explique bien pero vale la pena leerlo.

Diagrama de componentes

Como su nombre lo indica sirve para unir los componentes de un sistema o inclusos mismo sistemas que se unen para generar un ecosistema, es bastante parecido a los diagramas de estado pero con un enfoque diferente. Se puede usar todo lo que vimos de de los cuadrados y las flechas pero sin los puntos finales o iniciales ya que los componentes siempre están ahí sin importar el momento en el tiempo.

Igual que con los anteriores si gustas indagar mas te recomiendo mucho, otra vez, LucidChart.

Ya para cerrar

En mi recomendación personal mientras estudias aprende muy bien como usar UML sobre todo el primer y tercer modelos que mencione ya que te ayudaran un motón al momento de planear tu software. Recomiendo mucho leer las paginas que anexe en cada modelo y si aun no entiendes muy bien para que sirve UML te recomiendo leas mi blog anterior “Porque usamos UML”.

Porque usamos UML?

En blogs anteriores había hablado de UML pero no había explicado el porque se usa ni el que es, así que esta ves toca hacer eso.

Para empezar, qué es UML?

UML es la abreviación para Lenguaje Unificado de Modelado, se crea con la idea de forjar un lenguaje basado en la comprensión visual para poder tener una especie de lenguaje universal en la creación de software. Si desean saber un poco mas de lo que es UML pueden ir a LucidChart, LucidChart es una herramienta muy usada para la creación de modelos UML yo en lo personal lo he usado y lo recomiendo mucho.

Porque usamos UML?

En el párrafo anterior hable que se usa para crear un lenguaje universal en la creación de software pero hay mas detrás de esto. Para empezar debemos de entender que hace a un software un buen software, Deborah Kurata (Una muy famosa desarrolladora de software con muchos libros, les pondría un link pero no abarcaría todo en lo que ha trabajado así que mejor pongan su nombre en Google y vean el articulo que mas les llame la atención) dijo en 1998 que para que un software se le pueda considerar profesional debía:

  • Tener todas las necesidades de los usuarios cubiertas
  • Ser robusto
  • Ser mantenible
  • Estar correctamente documentado

La lista anterior es algo que ya conocemos muy bien en la actualidad y aquí es donde entra UML. Gracias a UML la planteación de como hacer el código se paso a la etapa de análisis ya que con UML es sencillo refinar el software. Esta pagina habla con mas detalles de esto, es muy interesante y recomiendo mucho leerlo.

Sabemos que UML se paso a la etapa de análisis porque ayuda a tener una mejor planeación para el desarrollo pero seguramente ya notaste que el modelado de un producto antes de su creación se practica en casi todas las ingenierías. Para diseñar una casa para perros debes usar madera, clavos, herramientas y una sola persona pero esto funciona de igual manera para una casa familiar o para un edificio? Con esta analogía es mas sencillo entender para que es UML, si has leído los blogs anteriores sabes que cualquier cosa que conlleve el desarrollo de software cambia dependiendo del producto y equipo, de modo que hay UML que tiene distintas bases desde requerimientos hasta estructura del sistema. La siguiente pagina web explica a detalle esto.

Dame mas!

Este blog es un poco mas pesado ya que es mucha teoría y pocas imágenes pero espero se haya entendido bien para que usamos UML, si quieres una pagina con bastante mas información y mas pesada de leer que este blog te recomiendo que leas esta pagina, si logras hacerlo aprenderás mas a detalle lo visto en este blog.

Patrones de Diseño

Como en cualquier campo de estudio o trabajo hay soluciones ya creadas por otras personas que son utilizadas como si de una misma herramienta se tratara, en el software esto no es diferente por lo que los vemos presentes todo el tiempo. Esta pagina web lo explica de una manera excelente y gráfica así que te recomiendo mucho visitarla.

Hay tres tipos :

  • Creacionales: Mecanismos de creación para objetos.
  • Estructurales: Funcionan para conectar objetos y clases en software mas extenso.
  • Comportamiento: Conexión o comunicación entre objetos.

La historia de estos patrones es bastante larga pero realmente se popularizo con el “The GoF book”, fue un libro que se popularizo por ser tan completo en este tema y por un nombre tan largo que en su momento se volvió un meme. Te dejo la liga para comprarlo en Amazon, al parecer es de los libros mas recomendados en nuestro campo.

Una ultima cosa que agregar es que existe el Anti Patrones de diseño, que aunque suena a gente que no le agradan estas practicas de hecho es mas bien el como no usarlas. Un Anti Patrón de diseño es por ejemplo crear un objeto dios en algún lenguaje orientado objetos. Un objeto dios es aquel con una gran cantidad de métodos y atributos que rompe con los parámetros de simplicidad de la programación orientada a objetos.

Si quieres indagar mas en el tema esta pagina te ofrece un articulo mucho mas completo de Patrones de Diseño.

Lenguajes Modelados

En mi opinión un tema bastante raro y sobre todo con información poco extensa, según nuestro amigo Wikipedia es un lenguaje artificial usado para expresar información o sistemas en una estructura definida por ciertas reglas.

La imagen de al lado muestra un poco del funcionamiento de estos lenguajes.

Ahora para mi fue muy extraño el comprenderlo, el simple hecho que es similar a la inteligencia artificial me confundía aun mas, hasta que me tope con esta pagina web y este blog. Para los que conocemos UML podemos entender de manera sencilla que es. Básicamente es el uso de sintaxis para la representación de un sistema, precisamente lo que se hace en UML. En mi mismo blog hice un post de casos de usuarios, UML va de la mano con esto siendo una manera de representar el funcionamiento de un sistema.

Entonces como funciona?

Tomare como ejemplo UML. UML te permite representar el almacenamiento de datos y métodos de una clase y como todas estas se conectan, de modo que como el titulo dice estamos creando un modelo de una clase hecha en algún lenguaje de programación ya que estos van de la mano.

El poder modelar lenguajes permite el entendimiento de relaciones y de funciones entre clases en un proyecto de programación. Para un programador esto es de gran importancia ya que nos permite eliminar redundancias y datos innecesarios para todos nuestros proyectos por lo que considero que vale mucho la pena siempre implementarlo en la creación de un nuevo proyecto.

Mis usuarios y software antes de crearlo

En la creación de software al momento de diseñar debemos utilizar los llamados casos de usuarios, esto para poder tener una idea del comportamiento del software y el usuario al momento de la interacción entre ellos. En lo que llevo estudiando no he llegado a un punto en el cual requiera la creación de uno de estos pero a lo que he visto son extremadamente útiles y si los haces completos incluso pueden servir como plantilla para la creación del software.

En este post voy hablar muy por encima de que son pero no de su creación, si es de tu interés te dejo este vídeo muy completo que me tope al investigarlos, esta en ingles pero los subtitulos en español son casi perfectos.

La definición de manera sencilla es una lista de acciones o eventos en pasos para las interacciones de diferentes roles en un sistema de software.

Las ventajas de usar estos por así decirlo diagramas son muchas y han sido usados ya por décadas. Por ejemplo nos permite representar de una manera muy sencilla el uso completo de nuestro sistema lo cual permite al cliente entenderlo de mejor manera, o también ayuda a definir de mejor manera los roles a tomar para los usuarios del sistema.

¿Entonces como se arma uno?

Lo primero son las partes:

  • Actores: Son los tipos de usuarios que interactuan con el sistema, lo mas común es que estos sean clasificados basados en importancia o rol.
  • Sistema: Este es el sistema donde se captura los requerimientos funcionales que especifican el comportamiento de los usuarios.
  • Objetivos: Es el objetivo al que llegas con cada paso del diagrama, puede ser solo uno pero por lo general son varios ya que un programa por lo general permite múltiples opciones.

Una vez conocemos que lo compone siguen los pasos de diseño:

  • Identificar los usuarios
  • Creamos los roles de nuestros usuarios
  • Identificar los objetivos principales
  • Crear y estructurar los casos para llegar a los objetivos

Lo anterior puedes verlo con mas detalle y resumido en este link.

Es clave aunque no lo parezca

Recuerda que como estudiante sin experiencia en el uso de estos no puedo afirmarte que son importantes pero por lo que investigue vaya que lo son. El conocer todos los posibles roles en tu software y los pasos que requiere un usuario para llegar a un objetivo permite evitar no solo redundancia si no una mejor planeacion para una mejor experiencia de usuario, lo cual como desarrolladores de software siempre debe ser nuestro mayor objetivo.

Reflexión Parcial 1

Hola esto es básicamente un vídeo de mi reflexión del primer parcial de la clase del profesor Ken. Como dato comienzo a hablar ya de los temas principales de la clase en el minuto 6:35 y todo lo anterior son cosas extras que me ha dejado la clase o que me han pasado por la clase. Dejo el link al vídeo ya que WordPress simplemente no me dejo ponerlo. https://www.loom.com/share/6d0be5cfc44a441d96d276769a9c195f

Los ciclos de vida y adaptación en Software

El Unified Software Development Process o Proceso Unificado de Desarrollo de Software es un marco de trabajo (Framework) el cual se basa en la creación de software mediante casos de usuarios, la idea es que sea incremental de modo que cambie el peso de las cosas dependiendo la etapa en la que se encuentre. El hecho de ser un marco de trabajo significa que cada proyecto puede implementar el UDP dependiendo de los requerimientos del proyecto.

El UDP cuenta de cuatro etapas:

  • Inception: Es la primer etapa y por lo general la mas corta, en esta etapa si el tiempo que toma no es relativamente corto significa que el proyecto esta siendo muy ambicioso en un mal sentido. Lo que se hace es la preparación para el comienzo del proyecto se establecen las metas, se prepara una agenda del proyecto y se calcula el costo estimado. Las ultimas partes se basan en que tan factible es lo que se pretende hacer o si se debe comprar o desarrollar componentes.
  • Elaboration: Esta etapa es el refinamiento de la etapa anterior, se comienza a determinar los requerimientos usando casos de uso, arquitectura del sistema, etc. El implementar una versión muy básica del proyecto es valido, lo que se busca es finalizar la etapa con una agenda real y costos de trabajo ademas de conocer los riesgos de todo el proyecto.
  • Construction: Es la fase mas larga del proyecto con diferencia, aquí comenzamos con la construcción del proyecto por bloques. Toda esta etapa se utiliza por lo general UML, diagramas de actividad, diagramas de secuencia, etc; finalmente terminas utilizando la ingeniería de software en su mayor esplendor. Al terminar esta etapa el proyecto esta listo para ser desplegado.
  • Transition: Es la etapa donde se recibe el feedback, y se decide que hacer con el. Por lo general se termina refinando partes del proyecto y se le enseña a los usuarios como utilizar el software.

RUP, IBM y los colados

Rational Unified Process o Proceso Unificado de Rational el UDP con la firma de IBM, IBM lo que hizo fue convertirse en el autor de esta metodología y de algún modo comerciar con ella, aun así es de los mas usadas y conocidas variaciones de UDP. RUP tiene 6 principios de desarrollo, esos son adaptar el proceso, equilibrar prioridades, demostrar valores de manera iterativa, colaboración de equipos, enfoque en calidad y máximo nivel de abstracción. Estos principios son los que realmente hacen a RUP el favorito de muchos. Es importante recalcar que no es el único ya que existen infinidad de ellos como AUP, BUP que tambien es de IBM, OUM de Oracle, etc.

He de recalcar que al igual que las metodologías estos marcos de trabajo se definen por tu empresa ya sea porque es el propietario o porque es el mas cómodo para sus desarrolladores. Casi todo de lo que hablo en el blog es solo la punta del iceberg por lo que se puede siempre elegir el que mas te gusta o facilita, siempre investigando un poco más o en la misma información que anexo siempre hasta abajo de cada blog.

Fuentes de información:

https://metodoss.com/metodologia-rup/

https://en.wikipedia.org/wiki/Unified_Process

https://study.com/academy/lesson/unified-process-model-definition-application.html

Unified Process

https://s3.amazonaws.com/academia.edu.documents/30335053/ideas2008proceedings.pdf?response-content-disposition=inline%3B%20filename%3DGrounding_Software_Domain_Ontologies_in.pdf&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWOWYYGZ2Y53UL3A%2F20190830%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190830T205205Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=80360ee9922e5b2eb1fa1807e9b22b89ed5d42e2095ba25b78064c3bf353459a

Binary Search, Pharo y el juego mas triste del mundo

Binary Search

Binary search, en español búsqueda binaria, es una forma de solucionar un problema en la que se deba hacer una búsqueda. Este algoritmo es muy común de usarse cuando tenemos un arreglo de objetos que siguen una regla de mayor a menor valor. Básicamente tomamos dos pivotes y un apuntador, usaremos números para que sea mas sencillo de entender, digamos que tengo un arreglo de números desde el 0 hasta el 10 y busco el numero 7, mis pivotes siempre comienzan en el principio y final del arreglo y mi apuntador en el centro. Comienzo revisando si el objeto y mi apuntador son iguales, sabemos que el apuntador esta en 5 y no es igual a 7 entonces revisamos si es mayor o menor, en este caso 5 es menor que siete por lo que el pivote se mueve a 5 y volvemos a poner el apuntador en la parte central de los dos pivotes. Digamos que ahora nuestro apuntador queda en 8 y entonces repetimos el proceso pero ahora nuestro pivote en 10 se mueve a 8 y el otro pivote se mueve a 5. El proceso anterior se repite hasta llegar a 7, si eres un poco observador pudiste darte cuenta del peor defecto de este algoritmo, nuestro arreglo siempre debe estar ordenado. Dejando esto de lado es muy eficiente y muy usado en el mundo de la programación.

Haciendo el juego mas triste del mundo en Pharo

Si alguna vez haz pasado por una clase de programación, por lo común en las clases de estructuras de datos, te habrás topado con el algoritmo que mencione antes y el juego con que lo explican, pero si no aquí explicare como hacerlo y sobre todo como se puede hacer en Pharo. NO PONDRÉ CÓDIGO me parece mejor simplemente escribirlo como si lo estuviera platicando y si alguien quiere ver código puede ir a ver las fuentes de información hasta abajo del Blog.

El juego con el cual la búsqueda binaria es explicada es básicamente tomar un numero y “adivinar” cual es mediante búsqueda binaria. No debe de ser muy difícil entender como se encuentra el numero sabiendo la explicación de hace rato. Si lo has programado en algún otro lenguaje básicamente también lo programaste en Pharo, al igual que otros lenguajes hay una función de random la cual toma un numero al azar dependiendo del rango que le des. Funciona igual que otro lenguaje, iniciamos por tomar un numero al azar el cual es almacenado y nunca cambiamos, una vez tenemos nuestro numero le decimos al usuario que ponga su numero y de ahí le diremos si el número es mas grande o mas chico que el nuestro hasta que gane el juego. Este es un juego muy básico pero ayuda para entender el lenguaje que trabajas y sin darte cuenta tener un acercamiento a los algoritmos, lo mejor es siempre agregar mas cosas como poder volver a iniciar el juego o un numero de intentos finitos pero por lo mientras se entendió a lo que me refiero. Finalmente ya hablando de Pharo me parece curioso el funcionamiento del lenguaje, tiene muchas cosas en común con lenguajes mas comunes y ademas tiene ventajas y desventajas sobre otros, es de esos lenguajes en los que por ejemplo puedes seleccionar una linea y dar click derecho para hacerla funcionar o si le pides el factorial de 1000 lo hace instantáneo, es una cosa divertida de explorar y si no tienes idea de que es Pharo descargalo y exploralo no es difícil instalar y viene con un tutorial, a mi en lo personal cada vez que abro la maquina virtual de Pharo me termino divirtiendo bastante.

Fuentes de información:

https://en.wikipedia.org/wiki/Binary_search_algorithm

https://www.geeksforgeeks.org/binary-search/

https://www.mathwarehouse.com/programming/gifs/binary-vs-linear-search.php

http://magaloma.seasidehosting.st/Collections

https://en.wikibooks.org/wiki/Smalltalk_the_fun_way/Number_Guessing_Game

http://pharo.gforge.inria.fr/PBE1/PBE1ch2.html#x8-100001

System Development Lyfe Cycle? En español por favor.

El System Development Lyfe Cycle, lo abreviaremos a SDLC, es el uso de metodologías en el desarrollo de software. ¿Metodologías? ¿Ciclos de vida? ¡¿QUÉ ESTA PASANDO DOCTOR GARCÍA?!

El desarrollo de software hace varios años era un desastre, al punto que varias veces en productos dentro del mercado era mas sencillo matarlo completamente a tratar de arreglarlo, hasta que los desarrolladores se dieron cuenta que era un caos y algo tenían que hacer, así como cuando ya vas a reprobar el semestre y empiezas de golpe a planificar y matarte mas o menos así. Muchos expertos comenzaron a estudiar las mejores metodologías para crear software, desde su planeación hasta su mantenimiento, incluso se creo uno de los documentos fundamentales de la Ingeniería de Software el famoso “No silver Bullets” que si tienes un tiempo vale mucho la pena leerlo, una de dos aprendes mucho o te ríes de las cosas que hacían antes de que esto se pensara detalladamente. Finalmente el SDLC es la base de todos los proyectos de cualquier software con pies y cabezas.

¿’Tons como jala o qué?

El SDLC no es único hay muchos estilos y cada uno se adapta mejor al tipo de desarrollador que eres o que tu equipo es. Cada uno varia pero en si nos basamos en dos cosas, las etapas y las metodologías. Las etapas varian en nombres y en numero pero independientemente de eso cada metodología cubre todos los aspectos necesarios, por lo general tienden a ser siete etapas:

  • Planeación: Manejo de recursos (Humanos y materiales), agenda del proyecto, estimación de costos, etc.
  • Requerimientos: Aquí se habla desde inversionistas hasta los conocimientos necesarios, dependiendo de la metodología terminas con una lista de recursos o tareas.
  • Diseño y prototipado: Comenzamos a programar y a diseñar, por lo general no se toma mucho esfuerzo se toma por lo general partes y soluciones ya hechas de otros proyectos (SO FTW!) y se termina con un prototipo muy similar al producto final.
  • Desarrollo de Software: Los desarrolladores trabajan en el producto final, esta etapa varia mucho entre metodologías ya que pueden basarse en tareas en bloques o tareas apresuradas y luego refinadas, también es importante estar en contacto con nuestros inversores para ver si sus expectativas se cumplen. Es parecido a cuando haces un dibujo, digamos que vamos a dibujar una persona donde podemos ir dibujando, pintando y detallando un brazo y luego repetimos con otra extremidad hasta terminar con el dibujo, o podemos hacer el contorno de todo el cuerpo, luego pintarlo y finalmente detallarlo. Este ejemplo es muy comun en este tema pero si no quedo claro mas adelante hablare un poco de los diferentes SDLC y quedara mas claro.
  • Testeo: Fundamental antes de publicarlo, revisar que tan pulido esta el producto usándolo y revisando su integridad, eficiencia, seguridad, etc. En esta parte lo mejor es que trates de usar de una manera incorrecta el software.
  • Despliegue?: En ingles es Deployment y no encontré una palabra que sonara mejor así que se queda en despliegue. Es la presentación del producto al mercado o al cliente, realmente depende esta etapa mas de los desarrolladores que de la metodología, esto se debe a que si eres una empresa grande es muy sencillo hacer la presentación del producto a si eres una pequeña.
  • Mantenimiento: Es seguramente la mas importante ya que un producto puede salir adelante incluso si todas las etapas anteriores salieron mal gracias a esta etapa, no se basa solo en asegurarse que el producto siga siendo utilizable durante un tiempo si no también en su mejora y corrección de errores. Mercados como el de los videojuegos trabajan mucho en esta etapa ya que es la que las mantiene casi siempre en el mercado, siendo uno de los casos mas comunes el de “Destiny” el cual es bastante interesante para investigar un poco si te dedicas al desarrollo de videojuegos.

¿Entonces cuales SDLG hay?

Realmente hay un numero infinito de SDLG por su propia naturaleza, hay aproximadamente seis que son los mas conocidos pero hay dos que me es muy sencillo decir que son los mas usados.

Waterfall: El modelo de cascada, para muchos es extremadamente rígido, para empezar el feedback no existe en este modelo por lo que no es posible cambiar ciertas cosas, se basa en un camino de planeación, desarrollo con mucho testeo y despliegue del software. Cada etapa dura bastante tiempo para así poder ser perfeccionada, lo malo es que no es posible regresar a etapas anteriores para hacer cambios. Hay una especie de modificación de esta que es la de salmón que te permite regresar en etapas y ser menos estricta, aun así el modelo de cascada sigue siendo mas utilizado.

Agile: Esta metodología es por así decirlo la contraparte de la cascada, busca enfocarse mas en prototipado y feedback, aquí el trabajo en equipo y con los inversores es clave para el refinamiento del producto, la planeación es mas abierta de modo que puede llegar a cambiar en caso de ser necesario, busca siempre estar atento a lo incierto.

¿El mejor SDLG?

Comenzare diciendo que el mejor SDLG simplemente NO EXISTE. El elegir depende en mi opinión de tres factores diferentes: tu mercado, tus desarrolladores y tu producto. Si trabajas en un espacio donde la comunicación entre desarrolladores no es un problema lo mas inteligente quizás sea trabajar con una metodología ágil para que el feedback y los cambios sean algo del día a día. Si tus inversores quieren un producto especifico y donde saben precisamente que quieren y tu trabajo es saber como hacerlo seguramente te encuentres mejor en una metodología de cascada. Finalmente si tu mercado es uno de constante cambio (con cambio no me refiero a mejoras si no a un cambio de paradigma o interés de los clientes) entonces uno pensaria en la agil pero, si no te gusta la agil vas a por la de cascada sabiendo el peligro de esto, recordemos que hay una infinidad de SDLG así que porque no ir por la de salmón o aprender una nueva metodología. Siempre recuerda que debes buscar la que mas te convenga y te sientas cómodo con ella para poder entregar a tus clientes siempre lo mejor.

Bibliografia (Son links porque quien necesita a la tonta APA?):

https://www.tutorialspoint.com/sdlc/sdlc_overview.htm

https://raygun.com/blog/software-development-life-cycle/

https://en.wikipedia.org/wiki/Systems_development_life_cycle (Sí es wikipedia, no es el fin del mundo si tiene información ya corroborada)

https://www.guru99.com/software-development-life-cycle-tutorial.html

Who am I?

I’m a Junior Software Engineering from Mexico

Why I do post?

  • I like to discuss new topics with people so we can grow our knowledge.
  • Helps me to think about what I have learn a how to apply it.
  • Is not at all because professor Ken told me to do it (But I like the idea tbh).

What have I done? (Is really not much)

  • My main language is Java, I have been using it for about one year. One year is probably a lot if you know that I have been coding for only two years.
  • I have work with Python, HTML, CSS, JS, React and JSP. And I just started with C this week.
  • I did Android apps for Arduinos projects, I know there is a lot of people who loves Arduino but my experiences have been really bad so I’m not a fan of Arduino.
  • I was a CodeU student this year, CodeU is a Google Students program in which you develop a WebApp in 10 weeks, here is where I worked with JSP and a lot of Google APIs.

English is not my native language and I’m not an expert so if you see something weirdly written I apologise for that, you really can’t trust Google Translate.

I’M NOT AN EXPERT, remember everything I write here is from what I learn in class so if you see a talk about something in the wrong way let me know, we will discuss it and I may change it giving credits to the ones who told me.

I always like to met new people, my hobbies are playing videogames (A LOT), coding, hanging out with friends and watching Netflix or Anime.

Design a site like this with WordPress.com
Get started