Saltar al contenido

Etiqueta: desarrollo web

¿Sirve una Mac con Apple Sillicon (M1, M1 Pro, M1 Max) para el desarrollo web?

Hace unos meses adquirí una Mac mini con el nuevo procesador de Apple Sillicon (M1). Estaba buscando remplazar mi Mac mini anterior y cuando vi que sacaron nuevos equipos con el chip M1 que en las pruebas de rendimiento superaban a la mayoría de procesadores, no producían mucho calor (vivo en un lugar caliente ) y por lo tanto no eran equipos ruidosos.

¿Que tienen de distinto los chips M1 y cual adquirir?

Los chips de Apple Sillicon (M1) son diseñados por la misma Apple. Utilizan la arquitectura ARM a diferencia de x86 que era la utilizada por AMD e Intel (quien proveía procesadores a Apple desde el 2005).

Esto significa que utilizan otra instrucciones, por lo tanto los programas deben ser compilados para esta arquitectura. Pero tiene como ventaja que los equipos con ARM se diseñan para consumir menos energía y actualmente poseen gran rendimiento.

El chip de Apple Sillicon (M1)
El chip de Apple Sillicon (M1)

Apple Sillicon (M1) para el desarrollo web

Respecto a la compatibilidad de aplicaciones, macOS ofrece Rosseta 2. Una aplicación que traduce el código de x86 a ARM permitiendo ejecutar cualquier aplicación previa sin problemas. Respecto al rendimiento, obviamente es menos al nativo pero igual están a la par con los equipos anteriores de Apple con procesadores Intel.

Sin embargo, a estas alturas la mayoría de aplicaciones ofrecen compatibilidad para el Apple Sillicon (M1). Por lo que podrás trabajar sin problemas como si estuvieses en otro equipo.

Editores o IDEs

Actualmente los principales IDEs para programación web ofrecen compatibilidad nativa. El primero en probar fue Sublime Text 4 que es el mas rápido que usado. Xcode como es el propio de Apple también es rápido pero casi no me gusta para desarrollo web. Visual Studio Code también ofrece version nativa que funciona muy rápido al igual que la suite de Jet Brains.

Lo único que se debe tener cuidado es con instalar la versión para ARM y no la de x86. Ya que todos estos editores ofrecen ambas versiones y a pesar que la versión de x86 corre en tu equipo. No lo hará de forma nativa y es muy lento.

Compatibilidad con lenguajes de programación

macOS ofrece versiones nativas de lenguajes com Ruby, PHP, entre otros. Sin embargo, puedes conseguir versiones nativas de Rust, Go, PHP, Ruby, JavaScript (con Node) y usarlas sin problemas. Si usas lenguajes interpretados, el código será igual entre arquitecturas así que no habrá problemas al momento de ejecutar o desarrollar tus aplicaciones. En nodeJS tuve que compilar algunos módulos para que quedaran nativos para que funcionara en mis proyectos, pero creo que otro sistemas operativos también hace eso la primera vez.

Docker

Docker requiere de Linux para funcionar, en macOS Big Sur ofrecen algo llamado Virtualization Framework que sirve para correr otros sistemas como Linux en un hypervisor. Docker desde la version 3.3 ofrece soporte para equipos con Apple Sillicon (M1). Desde que actualicé a la versión 4 no he tenido problemas siguiendo estas recomendaciones:

  • Uso las imágenes de mis contenedores en versiones de ARM para mejorar la velocidad. Algunos contenedores como el de Mailcatch, solo tienen para x86 y lo uso sin problemas.
  • Usar qemu como método de virtualización para tener 100% de estabilidad. Yo uso Virtualization Network y a veces falla al hacer operaciones pesadas con la base de datos.
  • La imagen oficial de MySQL no está para ARM y uso MariaDB en ARM. Siempre que intente usar MySQL inclusive con la emulación falla, desconozco la causa y por eso lo dejé de usar.

Pero en general funciona bien, estable y hasta los momentos no ha afectado mi trabajo.

Homebrew y aplicaciones del sistema

Te recomiendo visitar Does it ARM para buscar si el software corre en tu equipo. Aunque no he tenido problemas de compatibilidad. Suelo instalar las aplicaciones del sistema a través Homebrew y este separa las versiones de x86 y ARM por separado, así que si ofrece versión nativa se instala esa, si no, usará la arquitectura de x86. Todo esto funciona de forma transparente así que no habrá que intervenir.

Recomendaciones finales

Me parece que los equipos con Apple Sillicon (M1) son buenos para el desarrollo web, la relación costo/rendimiento es muy buena, gran compatibilidad con las aplicaciones existentes de macOS, gran potencia, poco consumo de energía y ningún ruido en el hardware. Hacen de estos unos equipos una buena compra para el desarrollo web.

Por ahora, la única limitación que veo es la cantidad de RAM, actualmente un máximo de 16GB, esta cantidad compartida con el chip de vídeo puede ser muy poco para algunos usuarios y probablemente deseen esperar por la siguiente generación de equipos con Apple Sillicon. Sin embargo, debido a la velocidad de los discos, al usar el área de intercambio o swap, la velocidad sigue siendo muy alta por lo que si necesitas mas RAM la velocidad sigue siendo muy potente, pero no es lo recomendable.

Respecto al disco duro, no me preocupa. Tengo una portátil con un disco duro SSD de menor calidad y hasta los momentos me ha durado 7 años, estoy seguro que esos me durarán mucho mas. Ademas he tomado medidas como no indexar ciertos archivos para aumentar el rendimiento y vida útil del disco duro.

En fin, si buscas un equipo con buen costo/rendimiento para realizar desarrollo web y prefieres usar macOS. Te recomiendo las computadoras con Apple Sillicon (M1). No tendrás problemas de compatibilidad con las aplicaciones existentes y el rendimiento será muy bueno.

Si compraste un equipo o vas a hacerlo, ¡Bienvenido(a) a la arquitectura ARM!

Deja un comentario

Estudiar desarrollo de aplicaciones web

El desarrollo de aplicaciones web consiste en crear programas y software que son ejecutados dentro de un navegador web como Firefox, Chrome o Edge. Estos programas se instalan en un servidor que sirve páginas web dependiendo de las acciones del usuario. Las tecnologías utilizadas para hacer estas aplicaciones son: HTML, CSS y Javascript. Así que si quieres dedicarte a esta rama, necesitas aprender estas tecnologías aparte de manejo básico de servidores, comunicaciones, entre otros.

Puede sonar complicado, pero estos temas se van aprendiendo poco a poco. Si quieres iniciarte en este mundo, te lo recomiendo. Solo debes tomar un paso a la vez. En líneas generales las cosas básicas que debes aprender son:

  • HTML: es lenguaje para definir las páginas web. Con él puedes crear la estructura de las páginas, definir la información de las páginas web. El lugar donde va ir cada dato, imagen, entre otros.
  • CSS: es el lenguaje que permite definir la apariencia de las cosas definidas en el HTML: color, tamaño, posición, efectos, animaciones, entre otros. Dominar CSS te garantizará un buen futuro laboral y es recomendado para personas con inclinaciones artísticas.
  • JS: es el lenguaje de programación para alterar el contenido HTML de la página y obtener información de los eventos que realiza el usuario o navegador. De esta forma creas las aplicaciones, porque con esto puedes obtener los datos de la interacción del usuario con la computadora y alterar el HTML/CSS para mostrar otra información o los cambios realizados.
  • Servidores : es el corazón de todo. Aquí es donde se guardan y se ejecutan las aplicaciones web realizadas. También puede tener el gestor de la base de datos que es lugar donde se guardan y procesan los datos de la aplicación.

A pesar de que hay mas contenido por aprender, considera que esas 4 áreas son las que todo desarrollador debe aprender y conocer de forma básica. Existen mas áreas y de conocimiento pero requieren especialización y estudio adicional.

¿Cómo empezar en el desarrollo de aplicaciones web?

Si no sabes como empezar, puedes iniciar estudiando en una institución como la Escuela CES que te brinde una ruta a seguir. Así garantizas que posees todos los conocimientos requeridos para trabajar como desarrollador web y no pierdes tiempo en descubrir que cosas se requieren para ir avanzando. Por ejemplo, en la Escuela CES ofrecen el programa de Técnico Superior en Desarrollo de Aplicaciones Web a Distancia para capacitar y convertirte en un profesional con conocimientos de front-end y back-end para trabajar en diversos campos labores que existen en el desarrollo web: creación de páginas web, desarrollo de sistemas web, manejo de servidores, crear videojuegos o contenido multimedia que utilice la web como plataforma, aplicaciones web móviles entre otros.

En este Técnico Superior en Desarrollo de Aplicaciones Web a Distancia es muy completo, te enseñan las tecnologías mencionadas al inicio de este artículo. Adicionalmente, te enseñan lenguajes de programación como .NET, Java y PHP que son los mas utilizados en el mercado laboral. De modo que aprenderás tecnologías que son utilizadas ampliamente en la industría y podrás trabajar inmediatamente al terminar.

También me gusta como enfocan el contenido en los 2 años: en el primer año conocerás lo básico y tendrás nociones generales de desarrollo web. Con esto teóricamente puedes trabajar y tendrás conocimiento de todas las áreas para que vayan planificando tu carrera (en base a lo que mas te guste o te atraiga. En el segundo año, se profundiza cada una de los distintas áreas del desarrollo web y así puedes aplicar el conocimiento adquirido en el primer año en trabajo mas especializado y así descubrir con mayor profundidad cada área. En este segundo año ya estudiarás como es el trabajo real de un desarrollador web y al ir agarrando experiencia, empezarás a crear tu perfil profesional. De esta forma al salir al mercado laboral contarás con experiencia en varias ramas. Permitiendo buscar trabajo en un amplio sector del mercado o específicamente en lo que mas te guste.

Si deseas mas información sobre como puedes convertirte en un desarrollador(a) web, te recomiendo leer la siguiente infografía que da mas detalles sobre ello:

Infografía sobre temas de desarrollo de aplicaciones web
Infografía sobre el estudio de desarrollo de aplicaciones web

¿Que ventajas ofrece ser desarrollador web?

En mi caso, llevo varias décadas como desarrollador web. Para mí una de las cosas que mas me gusta de ésta área es que el resultado de tu trabajo puede verse en cualquier dispositivo con Internet en cualquier parte del mundo. Como casi todos los dispositivos con conexión a Internet tienen un navegador web, cada uno de estos dispositivos puede ejecutar una aplicación web o ver el contenido de una página web que hayas realizado.

Mi segunda ventaja, es una consecuencia de lo que comenté en el párrafo anterior. Al poder verse desde cualquier lado con acceso a Internet, también puedes trabajar desde cualquier parte del mundo. El desarrollo web se puede hacer 100% de forma remota, puedes crear sitios web y aplicaciones y trabajar con otros en otras partes. Utilizando herramientas como Git y de manejo de proyectos, puedes organizarte y comunicarte con otros para trabajar en conjunto. Al final, solo debes escribir código y subirlo a un servidor para que pueda ser ejecutado.

Otra de las cosas que me gusta, es que si estas en el área de Front-end. Trabajas con contenidos visuales y multimedia junto con código. Entonces si te gusta hacer cosas artísticas o visuales, puedes dedicarte a esta rama. O si te llama mas la atención el manejo de datos, cálculos matemáticos y cosas similares puedes dedicarte a la rama de Back-end. Es decir, para cualquiera de tus habilidades, conseguirás en que trabajar dentro del área de desarrollo web.

Espero que te animes a estudiar esta rama y a dedicarte a ella, puedes hacerlo desde tu casa y conseguir una carrera profesional en poco tiempo. La remuneración es buena y no requiere mucho tiempo o conocimientos para salir al mercado laboral. Así que…¡Éxitos!

Deja un comentario

¿Qué es el desarrollo web?

Desde hace unos años escuchamos bastante el término de desarrollo web y probablemente se pregunten o han escuchado: ¿Qué es eso? ¿No es lo mismo que programación? Simplificando, desarrollo web consiste en crear soluciones tecnológicas que se ejecutarán dentro de un navegador (como Firefox/Chrome/Edge o Safari). Por este motivo es diferente a otro tipo de programación porque un navegador funciona de una forma particular y la información debe viajar a través de una Intranet o Internet. En otras palabras, crear todos esos programas y sitios web que vemos dentro de un navegador.

El uso del término desarrollo implica tareas mas allá de la programación: análisis de requisitos, conceptos de usabilidad, seguridad de la información, ingeniería de software, programación del lado del servidor y cliente, entre otros. Cuando alguien te diga que es desarrollador, implica que no solo codifica programas sino va mas allá y realiza mas tareas.

¿Que sé debe conocer para el desarrollo web?

Primero debes conocer los conceptos básicos de programación web:

  • HTML: es el lenguaje de marcado que permite estructurar el contenido que ves en un navegador. Es el esqueleto de la parte visual de la aplicación. En mi opinión aprender HTML es el primer paso para aprender desarrollo web, pues solo necesitas un editor de texto y un navegador para empezar a crear tus primeras páginas.
  • CSS: permite definir como va a lucir el HTML dependiendo del dispositivo. Indica al navegador los colores, tipos de letra, posición y tamaño al contenido del HTML. Su curva de aprendizaje es mediana pero dominar la tecnología requiere mucha experiencia.
  • JavaScript: es el lenguaje de programación que permite definir eventos, realizar tareas, acciones. Se ejecuta tanto en el lado del cliente (a través del navegador) como del servidor (para realizar cálculos, obtención de datos, entre otros). Si solo quieres hacer páginas web sencillas, no es necesario que aprendas esto por los momentos. Sin embargo, tarde o temprano te toparas con JavaScript a medida que vayas haciendo sitios mas complejos. Pues necesitaras agregar interacciones y automatizar acciones.
  • Lenguaje de programación del lado del servidor: las tecnologías anteriores permiten realizar páginas web que se muestran en el navegador. Pero cuando necesitamos interactuar con el servidor: iniciar sesión, subir archivos, descargar información. Necesitamos programar las acciones que debe realizar el servidor donde está alojada la página para saber que debe responder. Esto se hace mediante lenguajes de programación del lado del servidor. Entre los mas comunes suele ser PHP, JavaScript, Ruby, Java, Python, entre otros.

¿Qué aprender luego?

El siguiente paso es hacerte experto en estas 4 tecnologías, e ir en todo el ecosistema alrededor de ellas. Por ejemplo, todo sitio web se aloja en un servidor, entonces debes aprender como se configurar y optimizar uno. La información se almacena en base datos por lo que aprender a diseñarlas y consultar información  a través de ella te ayudará a ser mejor profesional. Conocer como obtener buenos resultados en los buscadores, visualizar correctamente el contenido en cualquier dispositivo. Aplicar técnicas de usabilidad en las interfaces para mejorar la interacción con los visitantes.

Pero no todo es tecnología, pues existen cosas importantes para desarrollador web: redactar correos para conversar correctamente con clientes. Aprender cuánto cuesta una web para saber cuanto cobrar por el trabajo. Elaboración de manuales, entre otros.

¡Parecen muchas cosas!

Aunque parece mucha cantidad de información, poco a poco iras aprendiendo. Ser desarrollador web requiere muchos conocimientos y años de experiencia. Pero con paciencia y práctica lograrás convertirte en uno.  A mi me parece una excelente rama de la informática, cada año va en auge y se puede trabajar desde cualquier parte del mundo.

Espero que les haya gustado esta introducción, recuerden comentar cualquier aporte, sugerencia u opinión sobre el desarrollo web.

Happy coding!

Deja un comentario

Cloud 9 un entorno de desarrollo en la nube

Hace unas semanas debido a una fuerte gripe, me tocó trabajar en casa para un trabajo que debía hacer una oficina donde tenía mi computadora con todo el entorno de desarrollo configurado. Sin embargo en la organización tenían configurado el servicio Cloud9 para poder trabajar remotamente.

Cloud9 es un completo entorno de desarrollo y ejecución en la nube, permitiéndote desde tu navegador web crear y ejecutar software web. El mismo posee un editor muy parecido a Sublime Text (de hecho muchos atajos del teclado son iguales), acceso a la terminal de un servidor y la posibilidad de configurar dependencias necesarias para ejecutar el programa: servidor web, framework, base de datos, etc.

Entorno de desarrollo de Cloud9
Entorno de desarrollo de Cloud9, todo se está ejecutando desde el navegador

El espacio de trabajo

El uso de Cloud9 es muy sencillo, primero debes configurar un espacio de trabajo (Workspace), actualmente (al menos en la versión gratuita) te ofrece entornos como LAMP, Django, NodeJS, puro HTML, Rails, entre otros. Luego de seleccionar el entorno especificas asignas un repositorio de control de versiones (creo que es impensable hoy en día hacer un proyecto sin eso), para obtenerlas fuentes, haces las configuraciones requeridas por tu aplicación y listo. Luego se encarga de correr los servicios necesarios y puedes acceder a tu aplicación web desde una URL.

Plantilla de espacios de trabajo disponibles en Cloud9
Plantilla de espacios de trabajo disponibles en Cloud9

¿Por qué usarlo?

La principal ventaja de usar Cloud9 es poder escribir el código de un programa, guardar, cambiarte de equipo o de localidad y seguir escribiendo código el mismo código sin problemas. Aunque puedes sacrificar privacidad (en la licencia no se ve nada extraño) es muy útil en casos donde trabajas en distintos lugares y no puedes cargar tu portátil (en mi caso me muevo entre casa, universidad y oficinas de clientes pero por la inseguridad no puedo cargar mi portátil en todos lados). Otro caso, como en el que descubrí la herramienta, en organizaciones pueden usarlo como respaldo en caso que un empleado necesite trabajar desde su casa u otro lugar de forma urgente.

Algo interesante, es que en pocos segundos puedes tener un entorno de ejecución funcional. Con unos clics puedes tener un servidor web hecho Django y empezar a trabajar en él (o estudiarlo), luego con otros clics tienes un entorno en Ruby. Lo cual es mas fácil que estar instalando dependencias y configurar servicios en tu sistema operativo.

El editor está realizado en Javascript y tecnología detrás de ella es un servidor NodeJS que crea contenedores en Docker, me parece interesante esta arquitectura. Algo que me parece «fácil» de replicar en otros servidores y poder contar con una solución similar.

Si deseas contar con IDE y entorno de ejecución que puedas usar en cualquier computadora sin estar descargando cosas, te recomiendo utilizar Cloud9. Lo único es que como toda nube, dependes de un tercero y a veces puedes desconfiar de la seguridad del mismo o de la calidad de protección de los datos. Aunque, me parece un buen entorno para aprender tecnologías o hacer experimentos rápidamente.

Sitio oficial de Cloud9

1 comentario