Antecedentes
Siempre me ha interesado crear cosas. La programación permite eso.
Empecé a aprender Swift (iOS) con 100 Days Of SwiftUI desde abril de este año, seguí hasta el día 7x, hice algunas apps y las publiqué en la App Store. Swift es genial porque se encarga de la interfaz y la lógica en el mismo lenguaje.
Pero luego me di cuenta de que el potencial de la web podría ser mayor, porque la web tiene más libertad. Tu app no necesita ser revisada, no hay que pagar por una cuenta de desarrollador y tienes la flexibilidad de elegir tu propio stack, etc. Sobre todo si quieres que tu aplicación sea multiplataforma.
Aprendizaje de desarrollo web
Después de crear algunas apps pequeñas para iPhone, durante los últimos 3–4 meses empecé a aprender desarrollo web con freeCodeCamp y solo un poco de Odin project.
Necesito el desarrollo web porque quiero crear una landing page para mis proyectos móviles, y algo de REST API para que mi app móvil consuma.
- FreeCodeCamp
- mucha práctica hands-on, de hecho sentí que era un poco abrumador y repetitivo.
- The Odin project
- Más teoría y comprensión profunda sobre el porqué y el cómo funciona la programación.
Así que sugeriría a la gente hacer ambos al mismo tiempo, uno beneficia al otro.
Solo he terminado “Responsive Web”, “Basic JavaScript” y la mitad de “React” en freeCodeCamp, por ahora.
Mi aprendizaje se basó principalmente en información de texto y documentación oficial. Disfruté mucho los tutoriales oficiales de React y NextJS.
No pagué ningún curso en línea para aprender en absoluto.
Ha sido sobre todo un aprendizaje basado en tareas: aprender eso que quiero hacer y seguir avanzando a lo siguiente.
Mi camino en la programación hasta ahora
Swift y algo de SQLite local > simple Flask REST API > HTML/CSS > JavaScript > 11ty (generador de sitios estáticos) > React (tutorial oficial) y NodeJS > Next.js (tutorial oficial) > ExpressJS > seguridad en REST API (CORS y variables de entorno) > repasar React (freeCodeCamp) > …
Todos dicen que hacer proyectos es importante y estoy muy de acuerdo
Habría perdido el interés si no fuera algo que quiero construir. Cuando me canso de trabajar en un proyecto después de mucho tiempo, lo sustituyo por otro proyecto que está en otro lenguaje para estimularme. El aprendizaje orientado a tareas es lo que mejor me funciona.
Algunos hosts gratuitos que usé y que son amigables para principiantes
- GitHub page
En el plan gratuito, tienes que hacer público tu repositorio para publicarlo. Pero aún puedes mapear tu dominio a él.
Muy fácil de conectar con GitHub, tiene soporte integrado para formularios de contacto, lo que significa que no necesitas tener tu propio servidor. También puedes integrarlo con la autenticación de Netlify CMS, que te permite iniciar sesión en tu blog estático, todo gratis. (La desventaja es que no tiene soporte para Next Image, lo que significa que no puedes aprovechar la optimización de <Image>. Para eso puedes usar Vercel, pero pierdes el soporte de formularios, así que tú eliges. Sé esto porque estaba subiendo mi sitio de NextJS a Netlify y me dio error.)
La interfaz no es tan genial ni amigable para principiantes en comparación con Netlify, pero tiene ancho de banda ilimitado, hosting gratuito e incluso algunas funciones en la nube limitadas que puedes usar. No era tan amigable para principiantes como Netlify, pero tampoco tan difícil. Tiene todo lo básico que necesitas y quieres gratis. Y obtuve mis dominios allí, así que ahora es mi host estático de cabecera.
Host de backend gratuito
Fue mi primer backend. Es muy fácil de usar para lo básico. Tiene tiempo de cálculo de CPU limitado, lo que significa que realmente no puedes ejecutar tareas de procesamiento grandes en este servidor gratis. Sin embargo, es muy bueno para una RESTful API, porque siempre está en ejecución.
Es mi nueva opción para alojar express.js; la desventaja es que se apaga automáticamente si está inactivo durante 15 minutos. Todavía tengo que encontrar un servidor gratuito siempre activo que permita alojar un servidor JavaScript. Sin embargo, un servidor que no se apaga cuesta alrededor de $7 al mes, lo que no es demasiado caro, y acepta tarjeta de débito, lo cual me gusta. La interfaz también es fácil.
No, fue demasiado abrumador para mí, pero parece ser uno de los mejores para escalabilidad a un precio razonable; aún tengo que tocarlo porque la interfaz del sitio web no es amigable para principiantes y no sé mucho sobre VPS.
Google Cloud requiere una tarjeta de crédito para empezar incluso con el plan gratuito, y resulta que no tengo una. Firebase es bueno para construir fácilmente un sistema de autenticación gratis. Exploraré esto más adelante.
Aprender todo el ciclo de publicación de un sitio web
Después de construir algunos sitios web simples con HTML/CSS y JS básico, quería crear un blog. Descubrí que hay toneladas de generadores de sitios estáticos que hacen eso. Busqué plantillas con Hugo, 11ty, etc. Fue muy bueno para mí entender cómo trabajar con NodeJS, porque solo se necesita un poco de lógica de programación para trabajar con estas plantillas, pero llegas a practicar todo el ciclo de construir un sitio web:
Creating a new git repository > create the site with NodeJS > connect & auto push to 3rd party host > manage your domain > compare the features & price for each web host to best suits your objective or language.La única parte que es diferente en la mayoría de los proyectos es solo el “create the site with NodeJS”; puedes usar python aquí, pero las otras cosas que has aprendido siguen aplicando.
Más sobre construir un blog
La mayor dificultad no es la función de blog en sí. Es la sección de comentarios. Si quieres escribir un blog y centrarte en el contenido como principiante, te sugiero que uses simplemente WordPress, tiene todo provisto, sin complicaciones.
De lo contrario, para integrar una sección de comentarios en tu blog estático, puedes usar Disqus (tiene una mala reputación por problemas de privacidad y consume mucha memoria al cargar). O puedes usar alguna alternativa de código abierto con inicio de sesión de GitHub. Pero aún así, que yo sepa, no hay ni una sola que sea gratuita y permita iniciar sesión con Google. O puedes construir tu propio servidor de comentarios backend, pero entonces también tienes que encargarte de filtrar el spam o cosas así. No es demasiado ideal para mí. Terminé usando simplemente Disqus, pero no se carga automáticamente hasta que el usuario hace clic en “Show comments”, para ahorrar tiempo de carga.
Sobre ChatGPT
Es útil solo hasta cierto punto. Evita usarlo para lógica complicada, por lo general da problemas. Algunos problemas molestos incluyen hacer cambios en tu código pero no notificártelo. Es útil para un primer borrador. No es adecuado si quieres un código sin errores, nunca hace eso. También me doy cuenta de que cuanto más le pides que revise tu código de nuevo, más errores comete. Lo cual era más molesto y consumía más tiempo que simplemente aprender la cosa y escribirla yo mismo.
Qué sigue
Aprender cómo construir un backend real con autenticación de registro/inicio de sesión, servidor de base de datos SQL. Quizás pruebe Django esta vez e intente construir un backend que funcione para una app multiplataforma.
El objetivo
Seguir aprendiendo y construyendo proyectos interesantes.
¡Gracias por leer!