From 26345c40eb52575aaed3d94b593af4d93fe9cec5 Mon Sep 17 00:00:00 2001 From: jamerrq Date: Sat, 27 Jan 2024 02:59:07 -0500 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20feat:=20enhancement?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .vscode/settings.json | 10 + astro.config.ts | 10 +- bun.lockb | Bin 381062 -> 385898 bytes package.json | 2 +- src/components/main/background.astro | 2 +- src/pages/blog/building-this-website.md | 276 ++++++++++++++++++------ src/pages/es/blog/acerca-de-esta-web.md | 110 ++++++++++ src/utils/index.ts | 12 +- tsconfig.json | 1 + 9 files changed, 343 insertions(+), 80 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index f68300c..cb0ad6c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -19,6 +19,16 @@ // "typescriptreact" ], "eslint.run": "onSave", + "eslint.options": { + "extensions": [ + ".js", + ".jsx", + ".md", + ".mdx", + ".ts", + ".tsx" + ] + }, "editor.formatOnSave": true, "editor.codeActionsOnSave": { "source.fixAll.eslint": "always" diff --git a/astro.config.ts b/astro.config.ts index c204ce3..ec60ade 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -4,12 +4,9 @@ import deno from '@astrojs/deno' import robotsTxt from 'astro-robots-txt' import preact from '@astrojs/preact' -// https://astro-critters.nikolahristov.tech/ -import critters from 'astro-critters' - // https://astro.build/config export default defineConfig({ - integrations: [tailwind(), robotsTxt(), preact(), critters()], + integrations: [tailwind(), robotsTxt(), preact()], adapter: deno(), output: 'server', i18n: { @@ -20,5 +17,8 @@ export default defineConfig({ strategy: 'pathname' } }, - site: 'https://jamerrq.deno.dev/' + site: 'https://jamerrq.deno.dev/', + image: { + domains: ['https://github.com/'] + } }) diff --git a/bun.lockb b/bun.lockb index ae486220e95a933996d2ef891f727128a1dfec83..0397328ae36d825fe172806d2e3a56b081ab00f9 100755 GIT binary patch delta 77450 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 N)@;+^Htt)y|37_IY_9+S delta 75094 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

-)eHTIoQ_2B*QZN*zr6clYKX={= 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

lh6phr>d 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%0AU3RPYuhzuS=2$1>u#@H#Zt0zS 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 .background { background-image: url('/pizarra.webp'); - min-height: 100dvh; + min-height: 100%; width: 100vw; background-position: center; background-repeat: repeat; diff --git a/src/pages/blog/building-this-website.md b/src/pages/blog/building-this-website.md index 44699cf..6724e89 100644 --- a/src/pages/blog/building-this-website.md +++ b/src/pages/blog/building-this-website.md @@ -38,14 +38,16 @@ Next.js or Nuxt.js. It's up to you and the task you want to accomplish. ## Astro I decided to use Astro. Astro is a framework that allows -you to build websites using components. That is, you can create reusable -components and combine them to build your website. In addition, Astro is -framework-agnostic. This means that you can use almost any JavaScript framework -to build your components in case you need interactivity. It's very easy to use -and has very complete documentation. - - +noreferrer" title="Astro">Astro. Astro is a framework that allows you to +build websites using components. That is, you can create reusable components and +combine them to build your website. In addition, Astro is framework-agnostic. +This means that you can use almost any JavaScript framework to build your +components in case you need interactivity. It's very easy to use and has very +complete documentation. + + +

@@ -85,7 +87,8 @@ addition, I decided to use Tailwind CSS to style the website. This article about Bento boxes talks in more detail about this type of design. Web design trend: bento box +target="_blank" rel="noopener noreferrer" title="Web design trend: bento +box">Web design trend: bento box # The Development @@ -93,18 +96,20 @@ target="_blank" rel="noopener noreferrer" title="Web design trend: bento box">We Once the design was defined, it was time to get to start the job. The first thing you usually do when you start a project is to create the project structure -using your favorite package manager. Since a while ago I have been using -pnpm and I really like it. It's very fast and efficient, it +using your favorite package manager. Since a while ago I have been using pnpm and I really like it. It's very fast and efficient, it has a very good caching system, and it's very easy to use. Indeed it is my preferred package manager for all my TS/JS projects. However, since this is a personal project, I felt free to continue exploring the new JS -runtime tool Bun. Bun is a new package manager that is still in -its early stages. It's very fast and efficient, it has a very good caching -system, and it's easy to use and setup. +runtime tool Bun. Bun is a new package manager that is still in its early +stages. It's very fast and efficient, it has a very good caching system, and +it's easy to use and setup. - +
@@ -112,17 +117,19 @@ target="_blank" title="Bun.sh">
-> target="_blank" title="Bun.sh">Bun is an all-in-one JavaScript runtime & toolkit designed for speed, -> complete with a bundler, test runner, and Node.js-compatible package manager. +Bun is an all-in-one JavaScript runtime & toolkit designed +for speed, complete with a bundler, test runner, and Node.js-compatible +package manager. ## Development tools ### Rules and Syntax: ESLint -ESLint is a tool for identifying and reporting on patterns found in -ECMAScript/JavaScript code, with the goal of making code more consistent and -avoiding bugs. +ESLint is a tool for identifying and reporting on patterns +found in ECMAScript/JavaScript code, with the goal of making code more +consistent and avoiding bugs.
@@ -150,9 +157,10 @@ also very useful when working as a team. ### Formatting: Prettier -Prettier is an opinionated code formatter. It enforces a consistent style by -parsing your code and re-printing it with its own rules that take the maximum -line length into account, wrapping code when necessary. +Prettier is an opinionated code formatter. It enforces a +consistent style by parsing your code and re-printing it with its own rules that +take the maximum line length into account, wrapping code when necessary. If you use the Astro VsCode extension, it will automatically format your code with Prettier. @@ -160,13 +168,14 @@ with Prettier. ### Styles: Tailwind CSS Tailwind CSS is a CSS framework that allows you to create -styles quickly and -easily. It's very easy to learn and use. In addition, it's very flexible and -allows you to create custom styles. For example, you can create your own colors, -sizes, spacings, etc. +title="Tailwind CSS">Tailwind CSS is a CSS framework that allows you to +create styles quickly and easily. It's very easy to learn and use. In addition, +it's very flexible and allows you to create custom styles. For example, you can +create your own colors, sizes, spacings, etc. + + -
@@ -174,10 +183,10 @@ sizes, spacings, etc. The truth about Tailwind CSS could write a whole article. It's just fascinating. If you want to know more about Tailwind CSS, I recommend the following article -with 7 benefits that the framework offers: -
Embracing the Utility-First Paradigm: +with 7 benefits that the framework offers: Embracing the Utility-First Paradigm: Benefits of Tailwind CSS By my side, I can say that I love Tailwind CSS. Overall, it's very practical and @@ -187,22 +196,23 @@ icing on the cake. ### Husky Husky is a tool that allows you to run scripts when you commit or push code to -your repository. This is very useful to run tests, linting, or any other -pre-commit/pre-push task. +noreferrer" title="Husky">Husky is a tool that allows you to run scripts +when you commit or push code to your repository. This is very useful to run +tests, linting, or any other pre-commit/pre-push task. -Check out the Husky documentation for more information. +Check out the Husky documentation for more +information. ### Fonts: Fontsource -Fontsource is a collection of open-source fonts that are -packaged into -individual NPM packages for self-hosting in your web applications. +Fontsource is a collection of open-source fonts that are +packaged into individual NPM packages for self-hosting in your web applications. Check out the Fontsource documentation for -more information about the benefits and advantages of using this tool. +target="_blank" rel="noopener noreferrer" title="Fontsource docs">Fontsource +documentation for more information about the benefits and advantages of +using this tool. ### Client Components: Preact @@ -234,22 +244,26 @@ project I could do with something lighter. That's why I decided to use Preact, which is an alternative to React that weighs only 3kB and has the same modern API. -Preact also comes with an implementation of the modern signals that allow you -to create stateful components very easily. +Preact also comes with an implementation of the modern +signals that allow you to create stateful components very easily. To be more specific, I needed a component that would render my projects through a section that could be iterated, and to be able to load the data dynamically with ease. -Preact is a fast 3kB alternative to React with the same modern API. It provides -the thinnest possible Virtual DOM abstraction on top of the DOM. The web is a -stable platform, it's time we stopped reimplementing it in the name of -portability. Preact is also a first-class citizen of the web platform. It -differs from other frameworks in that it's meant to be included in your other -assets and deployed as part of your site instead of being used to create a -single-page application (SPA). +Preact is a fast 3kB alternative to React with the same +modern API. It provides the thinnest possible Virtual DOM abstraction on top of +the DOM. The web is a stable platform, it's time we stopped reimplementing it in +the name of portability. Preact is also a first-class citizen of the web +platform. It differs from other frameworks in that it's meant to be included in +your other assets and deployed as part of your site instead of being used to +create a single-page application (SPA). + + -
@@ -258,27 +272,155 @@ single-page application (SPA). ### Blog: Markdown For the blog, I decided to use Markdown. It's a very simple and easy to use -language. In addition, it's very easy to read and write and in addition -with Tailwind CSS it's very easy to style. +language. In addition, it's very easy to read and write and in addition with +Tailwind CSS it's very easy to style. -I haven't felt the need to use MDX for now, but I don't rule out the -possibility of using it in the future. +I haven't felt the need to use MDX for now, but I don't rule out the possibility +of using it in the future. ### Hosting: Deno Deploy
Deno -Deploy is a globally distributed platform for serverless JavaScript applications. Your JavaScript, TypeScript, and WebAssembly code runs on managed servers geographically close to your users, enabling low latency and faster response times. Deploy applications run on fast, light-weight V8 isolates rather than virtual machines, powered by the Deno runtime. +title="Deno Deploy">Deno Deploy is a globally distributed platform for +serverless JavaScript applications. Your JavaScript, TypeScript, and WebAssembly +code runs on managed servers geographically close to your users, enabling low +latency and faster response times. Deploy applications run on fast, light-weight +V8 isolates rather than virtual machines, powered by the Deno runtime. + + -
-I decided to use Deno Deploy because it's very easy to use and it's -free. I don't have to worry about the server, I just have to worry about -the code. +I decided to use Deno Deploy because it's very easy to use and it's free. I +don't have to worry about the server, I just have to worry about the code. + +Another reason why I decided to use Deno Deploy is because it's the only adapter +(in my knowledge) that allows me to raise a local preview without having to +deploy. This together with the development tools allow me to get a development +experience very similar to the one I would have with a local server once I have +sent the code to production. To tell the truth my experience with both Deno and +Deno Deploy has been very good and I would like to continue using it in the +future. Great work by Ryan Dahl and the entire Deno team. + +## What to include? + +Once the entire structure of the site was defined, I started to think about what +I wanted to include on the site. It was evident that I should have a space to +show my projects, so it was the first section I added. The sections of contact, +information about me and projects I am working on should also have a place. +Finally after thinking about it a little bit I decided to also include a blog. +Although I don't consider myself a master in the art of writing, I think it's a +good way to share knowledge and learn more about the topics that interest me. + +In this article: Technical Writing +for Developers – Why You Should Have a Blog and How to Start One the +benefits of having a blog and how to start one are explained very well. It was +one of the reasons why I decided to include a blog on my site. + +In resume, I decided to include the following sections: + +- Home +- About me +- Projects +- Working on +- Blog +- Contact +- 404 + +## Revision by MoureDev + +On January 5th, when I had only been developing this site for about 4 short +days, I was able to participate in a live portfolio review by MoureDev. In this review several portfolios were analyzed +and tips were given to improve them. In my case, I think the review was very +positive and it helped me a lot to improve the design and structure of the site. +Below is the video of the review in case anyone wants to see it. + + + +## Removals + +Not everything I thought of including on the site ended up being included. Here +is a summary of the things I decided not to include and why. + +### Fira Code Nerd Font + +Fira Code Nerd Font is a font that includes programming icons. The idea was to +use it to show the icons of the technologies I use on the site and at the same +time use it to have any variety of icons that I needed on the site, such as the +icons of the social networks or the menu buttons. However, this made the site +much heavier, even after having optimized it. Therefore, I decided not to use +it, as it went against my goal of having a site as light as possible. + +To replace the icons I was using both free license svgs and those of the simple-icons library, which are very easy +to use and are very light. + +### CSS Peeps + +CSS Peeps is a library that allows you to add animated characters to a website. +The idea was to use it to add an animated character that represented me on the +site. However, as much as I liked the idea, this made it difficult for me to get +an ideal performance score in the Lighthouse tool. However, as it is a project +that I liked a lot, I have used it to create both the open graph images and the +twitter images of this site. + +More information about CSS Peeps at: https://csspeeps.com/ + +### Typed CSS + +Typed CSS is a library that allows you to add text animations to a website. I +used it to add text animations to the site, but I finally decided not to use it +because it made the initial CSS load very heavy. + +However, it is a library that is worth trying and that can be very useful to add +text animations to a website in case they are needed. + +More information about Typed CSS at: https://typedcss.com/ + +## The Result + +After several days of development, the site was ready to be published. The +final result is what can be seen on the site currently. Although there are +always things that can be improved, I am very happy with the final result, +because I think it meets all the goals I had set for myself at the beginning. + +![Lighthouse Preview Report](../../../lib/lighthouse/preview-report.png) + +## Conclusion + +This site is a project that I have really enjoyed developing. It has allowed me +to learn a lot about web development and the technologies I have used to +develop it. It has also allowed me to learn about topics that I had not touched +before, such as SEO. Finally, it has allowed me to have a personal website that +represents me and that allows me to show my projects and share my knowledge +with the world. + +Feel free to check the source code of the site on GitHub and contact me if you have any questions or +suggestions. + +Happy coding! Have a nice day! + +
+ +## Some References -## +- Technical Writing for Developers – Why You Should Have a Blog and How to Start One diff --git a/src/pages/es/blog/acerca-de-esta-web.md b/src/pages/es/blog/acerca-de-esta-web.md index 3c459fa..4f20766 100644 --- a/src/pages/es/blog/acerca-de-esta-web.md +++ b/src/pages/es/blog/acerca-de-esta-web.md @@ -258,3 +258,113 @@ de Deno. Decidí usar Deno Deploy porque es muy fácil de usar y es gratis. No tengo que preocuparme por el servidor, solo tengo que preocuparme por el código. + +Además, es el único adaptador (en mi conocimiento) que me permite levantar una preview local sin tener que hacer un deploy. Esto junto con las herramientas de +desarrollo me permiten obtener una experiencia de desarrollo muy similar a la +que tendría con un servidor local una vez que haya hecho mandado el código a +producción. A decir verdad mi experiencia tanto con Deno como Deno Deploy ha sido muy buena y me +gustaría seguir usándolo en el futuro. Un gran trabajo de Ryan Dahl y todo el +equipo de Deno. + +## Qué incluir? + +Una vez definida toda la estructura del sitio, me puse a pensar que es lo que +quería incluir en el sitio. Era evidente que debía tener un espacio para +mostrar mis proyectos, así que fue la primera sección que agregué. Las secciones +de contacto, información sobre mí y proyectos en los que estoy trabajando +también debían ocupar un lugar. Finalmente luego de pensarlo un poco decidí +también incluir un blog. Si bien no me considero un maestro en el arte de +escribir, creo que es una buena forma de compartir conocimiento y de aprender +más sobre los temas que me interesan. + +En este artículo: 'Technical Writing for Developers – Why You Should Have a Blog and How to Start One' se explica muy bien los beneficios de tener un blog y como empezar uno. Fué una de las razones por las que decidí incluir un blog en mi sitio. + +## Revisión por MoureDev + +El 5 de enero, cuando apenas llevaba unos 4 escasos días con el desarrollo de +este sitio, pude participar en una revisión en vivo de portafolios por parte de +MoureDev. En esta revisión se analizaron varios portafolios y se dieron +consejos para mejorarlos. En mi caso, creo que la revisión fue muy positiva y +me sirvió mucho para mejorar el diseño y la estructura del sitio. A continuación +dejo el video de la revisión por si alguien quiere verla. + + + +## Cosas que quedaron afuera + +No todo lo que se me ocurrió incluir en el sitio terminó siendo incluido. Acá +un resumen de las cosas que decidí no incluir y porque. + + +### Fira Code Nerd Font + +Fira Code Nerd Font es una fuente que incluye iconos de programación. De hecho es mi fuente favorita para programar. La idea +era usarla para mostrar los iconos de las tecnologías que uso en el sitio y al +mismo tiempo usarla para tener cualquier variedad de iconos que me hicieran +falta en el sitio, como por ejemplo los iconos de las redes sociales o los +botones del menú. Sin embargo, esta hacía que el sitio pesara mucho más, incluso +después de haberla optimizado. Por lo tanto, decidí no usarla, ya que iba en +contra de mi objetivo de tener un sitio lo más liviano posible. + +Para reemplazar los iconos estuve usando tanto svgs de licencia libre como +los de la librería simple-icons, los cuales son muy fáciles de usar y resultan muy livianos. + +### CSS Peeps + +CSS Peeps es una librería que permite agregar personajes animados a un sitio +web. La idea era usarla para agregar un personaje animado que me representara +en el sitio. Sin embargo, por más que me gustara la idea, esto hacía que +me costará obtener un puntaje ideal en rendimiento en la herramienta de +Lighthouse. Sin embargo, al ser un proyecto que me gustó bastante, lo he +usado para crear tanto las imágenes de open graph como las imágenes de twitter +de este sitio. + +Más información sobre CSS Peeps en: https://csspeeps.com/ + +### Typed CSS + +Typed CSS es una librería que permite agregar animaciones de texto a un sitio +web. La usé para agregar animaciones de texto en el sitio, pero finalmente +decidí no usarla porque hacía que la carga inicial de CSS fuera muy pesada. + +No obstante, es una librería que vale la pena probar y que puede ser muy útil +para agregar animaciones de texto a un sitio web en caso de que se necesiten. + +Más información sobre Typed CSS en: https://typedcss.com/ + +## El resultado final + +Luego de varios días de desarrollo, el sitio ya estaba listo para ser publicado. +El resultado final es el que se puede ver en el sitio actualmente. Si bien +siempre hay cosas que se pueden mejorar, estoy muy contento con el resultado +final, ya que creo que cumple con todos los objetivos que me había propuesto +al principio. + +![Lighthouse Preview Report](../../../../lib/lighthouse/preview-report.png) + +## Conclusiones + +Este sitio es un proyecto que me ha gustado mucho desarrollar. Me ha permitido +aprender mucho sobre el desarrollo de sitios web y sobre las tecnologías que +he usado para desarrollarlo. Además, me ha permitido aprender sobre temas que +no había tocado antes, como por ejemplo el SEO. Por último, me ha permitido +tener un sitio web personal que me representa y que me permite mostrar mis +proyectos y compartir mis conocimientos con el mundo. + +Siéntete libre de revisar el código fuente del sitio en: GitHub y de contactarme si tienes alguna duda o sugerencia. + +Feliz código! Ten un buen día! + +
+ +## Referencias + +- Technical + Writing for Developers – Why You Should Have a Blog and How to Start One diff --git a/src/utils/index.ts b/src/utils/index.ts index 1525328..2431e15 100644 --- a/src/utils/index.ts +++ b/src/utils/index.ts @@ -1,4 +1,4 @@ -export function shuffle (array: T[]): T[] { +export function shuffle(array: T[]): T[] { let currentIndex = array.length, randomIndex @@ -8,11 +8,11 @@ export function shuffle (array: T[]): T[] { randomIndex = Math.floor(Math.random() * currentIndex) currentIndex-- - // And swap it with the current element. - ;[array[currentIndex], array[randomIndex]] = [ - array[randomIndex], - array[currentIndex] - ] + // And swap it with the current element. + ;[array[currentIndex], array[randomIndex]] = [ + array[randomIndex], + array[currentIndex] + ] } return array diff --git a/tsconfig.json b/tsconfig.json index 80d9db0..6a50336 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ "exclude": [ "node_modules", "dist", + "astro.config.ts" ], "compilerOptions": { "baseUrl": ".",