{title}
diff --git a/components/cards/AboutCard.js b/components/cards/AboutCard.js
deleted file mode 100644
index e64e73b..0000000
--- a/components/cards/AboutCard.js
+++ /dev/null
@@ -1,41 +0,0 @@
-import { Fragment } from "react";
-
-import { Card } from "./_Card";
-import { Box, Flex, Text, Img } from "../elements";
-
-export const AboutCard = () => {
- return (
-
-
-
-
-
-
-
- Soy Carlos Azaustre. Desarrollador web desde hace{" "}
- {new Date().getFullYear() - 2011} años.
-
-
- He trabajado en Google, IBM y Eventbrite. Soy GDE (Google Developer
- Expert) en Tecnologías Web.
-
-
- Llevo {new Date().getFullYear() - 2013} años documentando en éste
- blog todo lo que aprendo y así compartirlo con el resto de la
- comunidad.
-
-
-
-
- );
-};
diff --git a/components/cards/AboutCardHome.js b/components/cards/AboutCardHome.js
deleted file mode 100644
index 9f1f5dc..0000000
--- a/components/cards/AboutCardHome.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import NextLink from "next/link";
-
-import { Card } from "./_Card";
-import { Text, Link } from "../elements";
-
-export const AboutCardHome = () => {
- return (
-
-
- ¡Hola! Soy Carlos Azaustre. Llevo desarrollando web desde hace{" "}
- {new Date().getFullYear() - 2011} años.
-
-
- He trabajado en varias empresas como Google, IBM y Eventbrite.
-
-
- Soy GDE (Google Developer Expert) en Tecnologías Web y Auth0 Ambassaddor
- además de divulgador de contenido a través de YouTube (¡Dónde ya somos
- más de 60,000 subs!)
-
-
-
- Más sobre mí →
-
-
-
- );
-};
diff --git a/components/cards/BlogCardHome.js b/components/cards/BlogCardHome.js
deleted file mode 100644
index d2ce7a2..0000000
--- a/components/cards/BlogCardHome.js
+++ /dev/null
@@ -1,26 +0,0 @@
-import NextLink from "next/link";
-
-import { Card } from "./_Card";
-import { Text, Link, Box } from "../elements";
-
-export const BlogCardHome = ({ posts }) => {
- return (
-
- {posts.map((post) => (
-
-
-
- {post.title}
-
- {post.date}
-
-
-
-
- ))}
-
- Ir al Blog →
-
-
- );
-};
diff --git a/components/cards/ContactCardHome.js b/components/cards/ContactCardHome.js
deleted file mode 100644
index 0466a07..0000000
--- a/components/cards/ContactCardHome.js
+++ /dev/null
@@ -1,154 +0,0 @@
-import { useForm, Controller } from "react-hook-form";
-import { useToast } from "@chakra-ui/react";
-
-import { Card } from "./_Card";
-import { IconMail, IconUser } from "../icons";
-import {
- Stack,
- FormControl,
- FormErrorMessage,
- InputGroup,
- InputLeftElement,
- Input,
- Textarea,
- Button,
-} from "../elements";
-
-export const ContactCardHome = () => {
- const toast = useToast();
- const {
- handleSubmit,
- control,
- formState: { isSubmitting, isValid },
- } = useForm();
-
- const onSubmit = async (data) => {
- try {
- const response = await fetch("/api/sendMail", {
- method: "POST",
- headers: { "Content-Type": "application/json" },
- body: JSON.stringify(data),
- });
- await response.json();
- toast({
- title: "Mensaje enviado",
- position: "top-right",
- description: "Tu mensaje se ha enviado correctamente",
- status: "success",
- duration: 3000,
- isClosable: true,
- variant: "left-accent",
- });
- } catch (error) {
- toast({
- title: "Error",
- position: "top-right",
- description: error.message,
- status: "error",
- duration: 3000,
- isClosable: true,
- variant: "left-accent",
- });
- }
- };
-
- return (
-
-
-
- );
-};
diff --git a/components/cards/NewsletterFormCard.js b/components/cards/NewsletterFormCard.js
deleted file mode 100644
index fff41e0..0000000
--- a/components/cards/NewsletterFormCard.js
+++ /dev/null
@@ -1,99 +0,0 @@
-import * as ga from "@/lib/ga";
-import { Card } from "./_Card";
-import { IconMail, IconUser } from "../icons";
-import {
- Text,
- InputGroup,
- InputLeftElement,
- Input,
- Button,
- Stack,
- Link,
-} from "../elements";
-
-export const NewsletterFormCard = ({ size }) => {
- const generateLead = () => {
- ga.event({
- action: "generate_lead",
- params: { event_label: "Newsletter Sign up", value: 1 },
- });
- };
-
- return (
-
-
- Recibe puntualmente información sobre las últimas novedades en
- tecnologías web y desarrollo web moderno para que estés siempre estés a
- la última
-
-
-
- );
-};
diff --git a/components/cards/_Card.js b/components/cards/_Card.js
deleted file mode 100644
index 4a92934..0000000
--- a/components/cards/_Card.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import { Fragment } from "react";
-import { Heading, Box } from "../elements";
-
-export const Card = ({
- children,
- type = "aside",
- bgColor = "white",
- headerColor = "secondary.900",
- headerTitle,
-}) => {
- const CardContent = () => (
-
-
- {headerTitle}
-
-
-
- );
-
- const AsideCard = ({ children }) => (
-
- {children}
-
-
- );
-
- const HomeCard = ({ children }) => (
-
- {children}
-
-
- );
-
- const LandingCard = ({ children }) => (
-
- {children}
-
-
- );
-
- if (type === "aside") return ;
- if (type === "home") return ;
- if (type === "landing") return ;
-};
diff --git a/components/icons.js b/components/icons.js
index 1d6d0c6..ed4c4cb 100644
--- a/components/icons.js
+++ b/components/icons.js
@@ -10,6 +10,8 @@ export {
FaLinkedinIn as IconLinkedin,
FaStar as IconStar,
FaRegStar as IconStarEmpty,
+ FaStarHalfAlt as IconStarHalf,
+ FaBaby as IconBaby,
} from "react-icons/fa";
export {
@@ -27,4 +29,7 @@ export {
MdLabel as IconLabel,
MdVideoLibrary as IconVideo,
MdSchool as IconStudy,
+ MdVideogameAsset as IconConsole,
} from "react-icons/md";
+
+export { IoIosSave as IconSave } from "react-icons/io";
diff --git a/components/index.js b/components/index.js
index 8f47c58..37ee5c3 100644
--- a/components/index.js
+++ b/components/index.js
@@ -1,20 +1,12 @@
-export { NewsletterFormCard } from "./cards/NewsletterFormCard";
-export { AboutCard } from "./cards/AboutCard";
-export { AboutCardHome } from "./cards/AboutCardHome";
-export { BlogCardHome } from "./cards/BlogCardHome";
-export { ContactCardHome } from "./cards/ContactCardHome";
+export { NewsletterFormCard } from "./NewsletterFormCard";
export { Logo } from "./Logo";
export { CustomImage } from "./CustomImage";
export { Summary } from "./Summary";
export { Dropdown, DropdownItem } from "./Dropdown";
-export { Book } from "./Book";
-export { Header } from "./Header";
-export { PageHeader } from "./PageHeader";
-export { Hero } from "./Hero";
export { Footer } from "./Footer";
-export { ButtonCTA } from "./ButtonCTA";
export { SectionLinks } from "./SectionLinks";
+export { SocialNetworks } from "./SocialNetworks";
export { PostMetadata } from "./PostMetadata";
export { PostListItem } from "./PostListItem";
export { CourseListItem } from "./CourseListItem";
@@ -23,8 +15,8 @@ export { OpenPR } from "./OpenPR";
export { Disqus } from "./Disqus";
export { ScrollToTop } from "./ScrollToTop";
export { SellItem } from "./SellItem";
-export { Rating } from "./Rating";
export { ReviewCard } from "./ReviewCard";
+export { TwitterShare } from "./TwitterShare";
export { Layout } from "./Layout";
export { LayoutLanding } from "./LayoutLanding";
diff --git a/data/courses/programacion-javascript.mdx b/data/courses/programacion-javascript.mdx
index 47c138e..7d69759 100644
--- a/data/courses/programacion-javascript.mdx
+++ b/data/courses/programacion-javascript.mdx
@@ -99,9 +99,17 @@ Suscríbete al canal de YouTube para no perderte ningún nuevo vídeo que se pub
---
+
+---
+
+
---
@@ -119,3 +127,11 @@ Suscríbete al canal de YouTube para no perderte ningún nuevo vídeo que se pub
title="¿Cómo funciona el objeto THIS en JavaScript"
description={`Aprende que hace el objeto THIS en JavaScript. Un objeto bastante peculiar que ha sido fuente de confusión durante mucho tiempo.\nEn este video te cuento como funciona a grandes rasgos para que te quede más claro.`}
/>
+
+---
+
+
diff --git a/data/courses/reactjs-gratis.mdx b/data/courses/reactjs-gratis.mdx
index 1d8b1a1..7e9c972 100644
--- a/data/courses/reactjs-gratis.mdx
+++ b/data/courses/reactjs-gratis.mdx
@@ -29,3 +29,9 @@ Suscríbete al canal de YouTube para no perderte ningún nuevo vídeo que se pub
/>
---
+
+
diff --git a/data/latestPodcasts.json b/data/latestPodcasts.json
deleted file mode 100644
index 0001129..0000000
--- a/data/latestPodcasts.json
+++ /dev/null
@@ -1,178 +0,0 @@
-[
- {
- "audio_preview_url": "https://p.scdn.co/mp3-preview/401840e80369671479e42cf9d1eef342a6cfc8c4",
- "description": "Soluciona tus dudas sobre cómo empezar a ser Freelance, cómo conseguir clientes y darte visibilidad en esta charla que tuvimos con Marta Pérez, una de las Community Builder de Malt, una plataforma para que Freelancers puedan encontrar ofertas de trabajo. --- Send in a voice message: https://anchor.fm/carlosazaustre/message",
- "duration_ms": 3791377,
- "explicit": false,
- "external_urls": {
- "spotify": "https://open.spotify.com/episode/66ytmkgGU1SQ2Z7XicMnc2"
- },
- "href": "https://api.spotify.com/v1/episodes/66ytmkgGU1SQ2Z7XicMnc2",
- "html_description": "Soluciona tus dudas sobre cómo empezar a ser Freelance, cómo conseguir clientes y darte visibilidad en esta charla que tuvimos con Marta Pérez, una de las Community Builder de Malt, una plataforma para que Freelancers puedan encontrar ofertas de trabajo.
---
Send in a voice message: https://anchor.fm/carlosazaustre/message",
- "id": "66ytmkgGU1SQ2Z7XicMnc2",
- "images": [
- {
- "height": 640,
- "url": "https://i.scdn.co/image/ab6765630000ba8a77ea99cc5a53a4e180b1d31a",
- "width": 640
- },
- {
- "height": 300,
- "url": "https://i.scdn.co/image/ab67656300005f1f77ea99cc5a53a4e180b1d31a",
- "width": 300
- },
- {
- "height": 64,
- "url": "https://i.scdn.co/image/ab6765630000f68d77ea99cc5a53a4e180b1d31a",
- "width": 64
- }
- ],
- "is_externally_hosted": false,
- "is_playable": true,
- "language": "es",
- "languages": [
- "es"
- ],
- "name": "Episodio 3 - Cómo Ser Freelance Developer | Hablamos con Marta Pérez de Malt",
- "release_date": "2022-01-19",
- "release_date_precision": "day",
- "resume_point": {
- "fully_played": false,
- "resume_position_ms": 0
- },
- "type": "episode",
- "uri": "spotify:episode:66ytmkgGU1SQ2Z7XicMnc2"
- },
- {
- "audio_preview_url": "https://p.scdn.co/mp3-preview/b31fe6d0f60a68eb159c205eb8a655dcccefa2c2",
- "description": "¿Qué es la Neurodiversidad? Un apasionante mundo dónde tienen cabida muchas áreas y que en el sector de la programación y el desarrollo de software se ven más de lo que creemos. En este episodio nos acompaña Paola García (La primera invitada!), Ingeniera y Postgraduada en Genómica que nos aportará su experiencia y conocimientos sobre este area para que lo comprendamos y mejor y entendamos como nos puede afectar en el día a día en nuestro sector. Puedes seguir a Paola en las siguientes redes: - Twitter: @ggarciapaola - Instagram: @paolagarcianeurodiversidad - YouTube: Paola García Música de fondo: \"Communication Disorder\" de Hola Beats --- Send in a voice message: https://anchor.fm/carlosazaustre/message",
- "duration_ms": 4521216,
- "explicit": false,
- "external_urls": {
- "spotify": "https://open.spotify.com/episode/2W1DnjeSZbK0bNNQ3tK79i"
- },
- "href": "https://api.spotify.com/v1/episodes/2W1DnjeSZbK0bNNQ3tK79i",
- "html_description": "¿Qué es la Neurodiversidad? Un apasionante mundo dónde tienen cabida muchas áreas y que en el sector de la programación y el desarrollo de software se ven más de lo que creemos.
En este episodio nos acompaña Paola García (La primera invitada!), Ingeniera y Postgraduada en Genómica que nos aportará su experiencia y conocimientos sobre este area para que lo comprendamos y mejor y entendamos como nos puede afectar en el día a día en nuestro sector.
Puedes seguir a Paola en las siguientes redes:
- Twitter: @ggarciapaola
- Instagram: @paolagarcianeurodiversidad
- YouTube: Paola García
Música de fondo: "Communication Disorder" de Hola Beats
---
Send in a voice message: https://anchor.fm/carlosazaustre/message",
- "id": "2W1DnjeSZbK0bNNQ3tK79i",
- "images": [
- {
- "height": 640,
- "url": "https://i.scdn.co/image/ab6765630000ba8a5cbfe49a978d83a28a38589e",
- "width": 640
- },
- {
- "height": 300,
- "url": "https://i.scdn.co/image/ab67656300005f1f5cbfe49a978d83a28a38589e",
- "width": 300
- },
- {
- "height": 64,
- "url": "https://i.scdn.co/image/ab6765630000f68d5cbfe49a978d83a28a38589e",
- "width": 64
- }
- ],
- "is_externally_hosted": false,
- "is_playable": true,
- "language": "es",
- "languages": [
- "es"
- ],
- "name": "Episodio 2 - Hablamos de Neurodiversidad con Paola Garcia",
- "release_date": "2021-08-07",
- "release_date_precision": "day",
- "resume_point": {
- "fully_played": false,
- "resume_position_ms": 0
- },
- "type": "episode",
- "uri": "spotify:episode:2W1DnjeSZbK0bNNQ3tK79i"
- },
- {
- "audio_preview_url": "https://p.scdn.co/mp3-preview/28fa2b531d779257bd6cbc8fb5e5e57c5e4ae1e8",
- "description": "Te doy la bienvenida al primer episodio \"oficial\" del podcast Hablando.js, sobre programación y desarrollo web pero no tanto del código, sino desde la parte humana, personal y la experiencia. Hoy hablamos de cómo el avance de la tecnología está evolucionando los puestos de trabajo, en todos los sectores, pero principalmente el nuestro del desarrollo de software y la programación. Hablamos de GitHub Copilot y cómo este tipo de herramientas nos pueden afectar o no en nuestra profesión. Podcast creado por Carlos Azaustre. Creador de contenido sobre tecnologías web y divulgador en YouTube Música: \"Communication Disorder\" de Hola Beats --- Send in a voice message: https://anchor.fm/carlosazaustre/message",
- "duration_ms": 2444132,
- "explicit": false,
- "external_urls": {
- "spotify": "https://open.spotify.com/episode/5Q4nsJMjFaqpQVJsR5rkOF"
- },
- "href": "https://api.spotify.com/v1/episodes/5Q4nsJMjFaqpQVJsR5rkOF",
- "html_description": "Te doy la bienvenida al primer episodio "oficial" del podcast Hablando.js, sobre programación y desarrollo web pero no tanto del código, sino desde la parte humana, personal y la experiencia.
Hoy hablamos de cómo el avance de la tecnología está evolucionando los puestos de trabajo, en todos los sectores, pero principalmente el nuestro del desarrollo de software y la programación.
Hablamos de GitHub Copilot y cómo este tipo de herramientas nos pueden afectar o no en nuestra profesión.
Podcast creado por Carlos Azaustre. Creador de contenido sobre tecnologías web y divulgador en YouTube
Música: "Communication Disorder" de Hola Beats
---
Send in a voice message: https://anchor.fm/carlosazaustre/message",
- "id": "5Q4nsJMjFaqpQVJsR5rkOF",
- "images": [
- {
- "height": 640,
- "url": "https://i.scdn.co/image/ab6765630000ba8a8c74afd148e2e162c4fcf78a",
- "width": 640
- },
- {
- "height": 300,
- "url": "https://i.scdn.co/image/ab67656300005f1f8c74afd148e2e162c4fcf78a",
- "width": 300
- },
- {
- "height": 64,
- "url": "https://i.scdn.co/image/ab6765630000f68d8c74afd148e2e162c4fcf78a",
- "width": 64
- }
- ],
- "is_externally_hosted": false,
- "is_playable": true,
- "language": "es",
- "languages": [
- "es"
- ],
- "name": "Episodio 1: La Inteligencia Artificial, nuestra compañera de trabajo.",
- "release_date": "2021-07-06",
- "release_date_precision": "day",
- "resume_point": {
- "fully_played": false,
- "resume_position_ms": 0
- },
- "type": "episode",
- "uri": "spotify:episode:5Q4nsJMjFaqpQVJsR5rkOF"
- },
- {
- "audio_preview_url": "https://p.scdn.co/mp3-preview/aed7503cebfc28e437ee48339c2f27a093d928d6",
- "description": "Episodio piloto (como en las series de televisión) de este proyecto de podcast, donde hablaremos no sólo de programación y desarrollo web, sino también de la parte humana y personal, con experiencias, entrevistas y lo que vaya surgiendo. Mi nombre es Carlos Azaustre, y tras varios años trabajando como desarrollador web, ahora me dedico a crear y divulgar contenido relacionado con la programación. Gracias por escucharme ✌️ Además de en este podcast, me encuentras en todas las redes sociales como @carlosazaustre. Expecialmente en YouTube donde ya somos más de 60,000 amantes de JavaScript --- Send in a voice message: https://anchor.fm/carlosazaustre/message",
- "duration_ms": 803665,
- "explicit": false,
- "external_urls": {
- "spotify": "https://open.spotify.com/episode/52KMznI6l9x4MoZrO4uIy0"
- },
- "href": "https://api.spotify.com/v1/episodes/52KMznI6l9x4MoZrO4uIy0",
- "html_description": "Episodio piloto (como en las series de televisión) de este proyecto de podcast, donde hablaremos no sólo de programación y desarrollo web, sino también de la parte humana y personal, con experiencias, entrevistas y lo que vaya surgiendo.
Mi nombre es Carlos Azaustre, y tras varios años trabajando como desarrollador web, ahora me dedico a crear y divulgar contenido relacionado con la programación.
Gracias por escucharme ✌️
Además de en este podcast, me encuentras en todas las redes sociales como @carlosazaustre. Expecialmente en YouTube donde ya somos más de 60,000 amantes de JavaScript
---
Send in a voice message: https://anchor.fm/carlosazaustre/message",
- "id": "52KMznI6l9x4MoZrO4uIy0",
- "images": [
- {
- "height": 640,
- "url": "https://i.scdn.co/image/ab6765630000ba8a7dbd4a60a6e03a4a51b6d838",
- "width": 640
- },
- {
- "height": 300,
- "url": "https://i.scdn.co/image/ab67656300005f1f7dbd4a60a6e03a4a51b6d838",
- "width": 300
- },
- {
- "height": 64,
- "url": "https://i.scdn.co/image/ab6765630000f68d7dbd4a60a6e03a4a51b6d838",
- "width": 64
- }
- ],
- "is_externally_hosted": false,
- "is_playable": true,
- "language": "es",
- "languages": [
- "es"
- ],
- "name": "Episodio 0 - Piloto",
- "release_date": "2021-06-27",
- "release_date_precision": "day",
- "resume_point": {
- "fully_played": false,
- "resume_position_ms": 0
- },
- "type": "episode",
- "uri": "spotify:episode:52KMznI6l9x4MoZrO4uIy0"
- }
-]
\ No newline at end of file
diff --git a/data/latestVideos.json b/data/latestVideos.json
index 9e75654..20e112c 100644
--- a/data/latestVideos.json
+++ b/data/latestVideos.json
@@ -1 +1 @@
-[{"kind":"youtube#playlistItem","etag":"Jtye1GqbWLM2d_pJWgRmxGzAdPc","id":"VVVKZ0djOHBRTzFsdjA0VlhyQnhBX0hnLlh0UE9BTTRaZFQ4","snippet":{"publishedAt":"2022-07-12T17:09:07Z","channelId":"UCJgGc8pQO1lv04VXrBxA_Hg","title":"Iníciate con JavaScript en 5 días","description":"","thumbnails":{"default":{"url":"https://i.ytimg.com/vi/XtPOAM4ZdT8/default.jpg","width":120,"height":90},"medium":{"url":"https://i.ytimg.com/vi/XtPOAM4ZdT8/mqdefault.jpg","width":320,"height":180},"high":{"url":"https://i.ytimg.com/vi/XtPOAM4ZdT8/hqdefault.jpg","width":480,"height":360},"standard":{"url":"https://i.ytimg.com/vi/XtPOAM4ZdT8/sddefault.jpg","width":640,"height":480},"maxres":{"url":"https://i.ytimg.com/vi/XtPOAM4ZdT8/maxresdefault.jpg","width":1280,"height":720}},"channelTitle":"Carlos Azaustre - Aprende JavaScript","playlistId":"UUJgGc8pQO1lv04VXrBxA_Hg","position":0,"resourceId":{"kind":"youtube#video","videoId":"XtPOAM4ZdT8"},"videoOwnerChannelTitle":"Carlos Azaustre - Aprende JavaScript","videoOwnerChannelId":"UCJgGc8pQO1lv04VXrBxA_Hg"}},{"kind":"youtube#playlistItem","etag":"tp05TChY5ZConYXbhYiKOy8SOu8","id":"VVVKZ0djOHBRTzFsdjA0VlhyQnhBX0hnLjdOb19lM2xvcW40","snippet":{"publishedAt":"2022-07-05T16:51:17Z","channelId":"UCJgGc8pQO1lv04VXrBxA_Hg","title":"LO NUEVO que trae JAVASCRIPT en 2022 - Nuevas Features en ES2022","description":"Cómo conseguir un sueldo de $100K como Developer en Remoto \n▶ https://m.arc.dev/39aFB9b\n\nTodas las features que incorpora la nueva versión del estándar de JavaScript\n▶ https://github.com/tc39/proposals/blob/main/finished-proposals.md\n\n⏱ Contenido del vídeo\n0:00 Intro\n0:48 Como encontrar trabajo remoto como Dev\n2:06 Novedades de ECMAScript 2022 (ES13)\n\nOtros vídeos que pueden interesarte 👇\n\n▶ Curso Completo Gratis de JavaScript desde cero\nhttps://www.youtube.com/watch?v=S9ojNaeC1RI\n\n▶ 7 Métodos de arrays que debes conocer\nhttps://www.youtube.com/watch?v=5yPf74sCu2k\n\n▶ JavaScript básico que debes saber antes de empezar con cualquier framework\nhttps://www.youtube.com/watch?v=sKsNO-quEAw\n\n▶ Cómo Funciona la asíncronía en JavaScript (Promesas, Callbacks y Async/Await)\nhttps://www.youtube.com/watch?v=rKK1q7nFt7M\n\n▶ 3 libros en español para aprender y dominar JavaScript\nhttps://www.youtube.com/watch?v=CpelevzT8xg\n\n🔔 No olvides suscribirte y activar la campanita para no perderte ningún vídeo \n► https://youtube.com/carlosazaustre?sub_confirmation=1\n\n🏆 Si te gusta el contenido que comparto, puedes apoyarme de una manera más directa uniéndote al programa de MIEMBROS del canal\n► https://www.youtube.com/channel/UCJgGc8pQO1lv04VXrBxA_Hg/join\n\n#javascript #desarrolloweb #programacionweb #carlosazaustre","thumbnails":{"default":{"url":"https://i.ytimg.com/vi/7No_e3loqn4/default.jpg","width":120,"height":90},"medium":{"url":"https://i.ytimg.com/vi/7No_e3loqn4/mqdefault.jpg","width":320,"height":180},"high":{"url":"https://i.ytimg.com/vi/7No_e3loqn4/hqdefault.jpg","width":480,"height":360},"standard":{"url":"https://i.ytimg.com/vi/7No_e3loqn4/sddefault.jpg","width":640,"height":480},"maxres":{"url":"https://i.ytimg.com/vi/7No_e3loqn4/maxresdefault.jpg","width":1280,"height":720}},"channelTitle":"Carlos Azaustre - Aprende JavaScript","playlistId":"UUJgGc8pQO1lv04VXrBxA_Hg","position":1,"resourceId":{"kind":"youtube#video","videoId":"7No_e3loqn4"},"videoOwnerChannelTitle":"Carlos Azaustre - Aprende JavaScript","videoOwnerChannelId":"UCJgGc8pQO1lv04VXrBxA_Hg"}},{"kind":"youtube#playlistItem","etag":"gn0pKw35q8g53JjlklpuUv-Ph-w","id":"VVVKZ0djOHBRTzFsdjA0VlhyQnhBX0hnLklJWkpBVk1WMVNj","snippet":{"publishedAt":"2022-06-22T15:30:05Z","channelId":"UCJgGc8pQO1lv04VXrBxA_Hg","title":"LOS MEJORES PLUGINS de VSCODE para DESARROLLO WEB [2022]","description":"Aplica a trabajos remotos en tech de EEUU desde tu casa\n▶ https://carlosazaustre.es/turing/youtube\n\nLos mejores plugins y extensiones de VSCode para desarrollo web con JavaScript, React y mucho más.\n\nEsta es mi lista de preferidos, junto al theme y fuente que más utilizo.\n\nAquí te dejo una invitación para nuestra comunidad de desarrollo web \"PintaAPIs Community\" dónde somos más de 4000 devs y encontrarás recursos, podrás resolver dudas, compartir y más:\n▶ https://carlosazaustre.es/discord\n\n⏱ Contenido del vídeo\n00:00 Intro\n00:26 Crea tu CV como un PRO\n02:25 Plugins, Extensiones y Themes de VSCode","thumbnails":{"default":{"url":"https://i.ytimg.com/vi/IIZJAVMV1Sc/default.jpg","width":120,"height":90},"medium":{"url":"https://i.ytimg.com/vi/IIZJAVMV1Sc/mqdefault.jpg","width":320,"height":180},"high":{"url":"https://i.ytimg.com/vi/IIZJAVMV1Sc/hqdefault.jpg","width":480,"height":360}},"channelTitle":"Carlos Azaustre - Aprende JavaScript","playlistId":"UUJgGc8pQO1lv04VXrBxA_Hg","position":2,"resourceId":{"kind":"youtube#video","videoId":"IIZJAVMV1Sc"},"videoOwnerChannelTitle":"Carlos Azaustre - Aprende JavaScript","videoOwnerChannelId":"UCJgGc8pQO1lv04VXrBxA_Hg"}},{"kind":"youtube#playlistItem","etag":"nHB-xe9e8z-1R4IQ8BcAX25PH-4","id":"VVVKZ0djOHBRTzFsdjA0VlhyQnhBX0hnLnlmUnVrM19wdWtv","snippet":{"publishedAt":"2022-06-14T16:01:01Z","channelId":"UCJgGc8pQO1lv04VXrBxA_Hg","title":"La MEJOR forma de recorrer un Objeto en JAVASCRIPT","description":"","thumbnails":{"default":{"url":"https://i.ytimg.com/vi/yfRuk3_puko/default.jpg","width":120,"height":90},"medium":{"url":"https://i.ytimg.com/vi/yfRuk3_puko/mqdefault.jpg","width":320,"height":180},"high":{"url":"https://i.ytimg.com/vi/yfRuk3_puko/hqdefault.jpg","width":480,"height":360},"standard":{"url":"https://i.ytimg.com/vi/yfRuk3_puko/sddefault.jpg","width":640,"height":480},"maxres":{"url":"https://i.ytimg.com/vi/yfRuk3_puko/maxresdefault.jpg","width":1280,"height":720}},"channelTitle":"Carlos Azaustre - Aprende JavaScript","playlistId":"UUJgGc8pQO1lv04VXrBxA_Hg","position":3,"resourceId":{"kind":"youtube#video","videoId":"yfRuk3_puko"},"videoOwnerChannelTitle":"Carlos Azaustre - Aprende JavaScript","videoOwnerChannelId":"UCJgGc8pQO1lv04VXrBxA_Hg"}},{"kind":"youtube#playlistItem","etag":"WQS0LdXxE0v_HjsMtC5ahFN9Imk","id":"VVVKZ0djOHBRTzFsdjA0VlhyQnhBX0hnLk1qdjJDRG9iTkRr","snippet":{"publishedAt":"2022-05-31T16:00:11Z","channelId":"UCJgGc8pQO1lv04VXrBxA_Hg","title":"Que se espera de un PROGRAMADOR JUNIOR","description":"Crea tu portfolio dev con Rviewer y supera sus retos de Programación ¡Evaluados por Tech Mentors! 👉 https://bit.ly/3wKW6k5\n\nDescubre lo que se espera de un perfil programador Junior en sus primeros 1-2 años de experiencia profesional.\n\n¿Quieres saber lo que se espera de un PROGRAMADOR SENIORr?\nMira este otro vídeo ▶ https://www.youtube.com/watch?v=zWXnZPQtYWI\n\n⏱ CONTENIDO\n0:00 Intro\n0:35 Crea tu Portfolio Dev fácilmente\n2:46 Que se espera de ti como JUNIOR\n\n¿Quieres prepararte para una entrevista técnica? Mira estos otros videos que te comparto:\n\n✅ Resuelvo PRUEBA TÉCNICA en REACT para PROGRAMADOR JUNIOR MID\n▶ https://www.youtube.com/watch?v=2Lmz87uYBsw\n\n✅ Resuelvo PRUEBA TECNICA para PROGRAMADOR MID SENIOR\n▶ https://www.youtube.com/watch?v=G6uvuIJ6Af0\n\n✅ Resuelvo prueba de ENTREVISTA TECNICA para PROGRAMADOR JUNIOR FRONTEND\n▶ https://www.youtube.com/watch?v=I27ZJU2_-Og","thumbnails":{"default":{"url":"https://i.ytimg.com/vi/Mjv2CDobNDk/default.jpg","width":120,"height":90},"medium":{"url":"https://i.ytimg.com/vi/Mjv2CDobNDk/mqdefault.jpg","width":320,"height":180},"high":{"url":"https://i.ytimg.com/vi/Mjv2CDobNDk/hqdefault.jpg","width":480,"height":360},"standard":{"url":"https://i.ytimg.com/vi/Mjv2CDobNDk/sddefault.jpg","width":640,"height":480},"maxres":{"url":"https://i.ytimg.com/vi/Mjv2CDobNDk/maxresdefault.jpg","width":1280,"height":720}},"channelTitle":"Carlos Azaustre - Aprende JavaScript","playlistId":"UUJgGc8pQO1lv04VXrBxA_Hg","position":4,"resourceId":{"kind":"youtube#video","videoId":"Mjv2CDobNDk"},"videoOwnerChannelTitle":"Carlos Azaustre - Aprende JavaScript","videoOwnerChannelId":"UCJgGc8pQO1lv04VXrBxA_Hg"}}]
\ No newline at end of file
+[{"kind":"youtube#playlistItem","etag":"Jtye1GqbWLM2d_pJWgRmxGzAdPc","id":"VVVKZ0djOHBRTzFsdjA0VlhyQnhBX0hnLlh0UE9BTTRaZFQ4","snippet":{"publishedAt":"2022-07-12T17:09:07Z","channelId":"UCJgGc8pQO1lv04VXrBxA_Hg","title":"Iníciate con JavaScript en 5 días","description":"","thumbnails":{"default":{"url":"https://i.ytimg.com/vi/XtPOAM4ZdT8/default.jpg","width":120,"height":90},"medium":{"url":"https://i.ytimg.com/vi/XtPOAM4ZdT8/mqdefault.jpg","width":320,"height":180},"high":{"url":"https://i.ytimg.com/vi/XtPOAM4ZdT8/hqdefault.jpg","width":480,"height":360},"standard":{"url":"https://i.ytimg.com/vi/XtPOAM4ZdT8/sddefault.jpg","width":640,"height":480},"maxres":{"url":"https://i.ytimg.com/vi/XtPOAM4ZdT8/maxresdefault.jpg","width":1280,"height":720}},"channelTitle":"Carlos Azaustre - Aprende JavaScript","playlistId":"UUJgGc8pQO1lv04VXrBxA_Hg","position":0,"resourceId":{"kind":"youtube#video","videoId":"XtPOAM4ZdT8"},"videoOwnerChannelTitle":"Carlos Azaustre - Aprende JavaScript","videoOwnerChannelId":"UCJgGc8pQO1lv04VXrBxA_Hg"}},{"kind":"youtube#playlistItem","etag":"tp05TChY5ZConYXbhYiKOy8SOu8","id":"VVVKZ0djOHBRTzFsdjA0VlhyQnhBX0hnLjdOb19lM2xvcW40","snippet":{"publishedAt":"2022-07-05T16:51:17Z","channelId":"UCJgGc8pQO1lv04VXrBxA_Hg","title":"LO NUEVO que trae JAVASCRIPT en 2022 - Nuevas Features en ES2022","description":"Cómo conseguir un sueldo de $100K como Developer en Remoto \n▶ https://m.arc.dev/39aFB9b\n\nTodas las features que incorpora la nueva versión del estándar de JavaScript\n▶ https://github.com/tc39/proposals/blob/main/finished-proposals.md\n\n⏱ Contenido del vídeo\n0:00 Intro\n0:48 Como encontrar trabajo remoto como Dev\n2:06 Novedades de ECMAScript 2022 (ES13)\n\nOtros vídeos que pueden interesarte 👇\n\n▶ Curso Completo Gratis de JavaScript desde cero\nhttps://www.youtube.com/watch?v=S9ojNaeC1RI\n\n▶ 7 Métodos de arrays que debes conocer\nhttps://www.youtube.com/watch?v=5yPf74sCu2k\n\n▶ JavaScript básico que debes saber antes de empezar con cualquier framework\nhttps://www.youtube.com/watch?v=sKsNO-quEAw\n\n▶ Cómo Funciona la asíncronía en JavaScript (Promesas, Callbacks y Async/Await)\nhttps://www.youtube.com/watch?v=rKK1q7nFt7M\n\n▶ 3 libros en español para aprender y dominar JavaScript\nhttps://www.youtube.com/watch?v=CpelevzT8xg\n\n🔔 No olvides suscribirte y activar la campanita para no perderte ningún vídeo \n► https://youtube.com/carlosazaustre?sub_confirmation=1\n\n🏆 Si te gusta el contenido que comparto, puedes apoyarme de una manera más directa uniéndote al programa de MIEMBROS del canal\n► https://www.youtube.com/channel/UCJgGc8pQO1lv04VXrBxA_Hg/join\n\n#javascript #desarrolloweb #programacionweb #carlosazaustre","thumbnails":{"default":{"url":"https://i.ytimg.com/vi/7No_e3loqn4/default.jpg","width":120,"height":90},"medium":{"url":"https://i.ytimg.com/vi/7No_e3loqn4/mqdefault.jpg","width":320,"height":180},"high":{"url":"https://i.ytimg.com/vi/7No_e3loqn4/hqdefault.jpg","width":480,"height":360},"standard":{"url":"https://i.ytimg.com/vi/7No_e3loqn4/sddefault.jpg","width":640,"height":480},"maxres":{"url":"https://i.ytimg.com/vi/7No_e3loqn4/maxresdefault.jpg","width":1280,"height":720}},"channelTitle":"Carlos Azaustre - Aprende JavaScript","playlistId":"UUJgGc8pQO1lv04VXrBxA_Hg","position":1,"resourceId":{"kind":"youtube#video","videoId":"7No_e3loqn4"},"videoOwnerChannelTitle":"Carlos Azaustre - Aprende JavaScript","videoOwnerChannelId":"UCJgGc8pQO1lv04VXrBxA_Hg"}},{"kind":"youtube#playlistItem","etag":"gn0pKw35q8g53JjlklpuUv-Ph-w","id":"VVVKZ0djOHBRTzFsdjA0VlhyQnhBX0hnLklJWkpBVk1WMVNj","snippet":{"publishedAt":"2022-06-22T15:30:05Z","channelId":"UCJgGc8pQO1lv04VXrBxA_Hg","title":"LOS MEJORES PLUGINS de VSCODE para DESARROLLO WEB [2022]","description":"Aplica a trabajos remotos en tech de EEUU desde tu casa\n▶ https://carlosazaustre.es/turing/youtube\n\nLos mejores plugins y extensiones de VSCode para desarrollo web con JavaScript, React y mucho más.\n\nEsta es mi lista de preferidos, junto al theme y fuente que más utilizo.\n\nAquí te dejo una invitación para nuestra comunidad de desarrollo web \"PintaAPIs Community\" dónde somos más de 4000 devs y encontrarás recursos, podrás resolver dudas, compartir y más:\n▶ https://carlosazaustre.es/discord\n\n⏱ Contenido del vídeo\n00:00 Intro\n00:26 Crea tu CV como un PRO\n02:25 Plugins, Extensiones y Themes de VSCode","thumbnails":{"default":{"url":"https://i.ytimg.com/vi/IIZJAVMV1Sc/default.jpg","width":120,"height":90},"medium":{"url":"https://i.ytimg.com/vi/IIZJAVMV1Sc/mqdefault.jpg","width":320,"height":180},"high":{"url":"https://i.ytimg.com/vi/IIZJAVMV1Sc/hqdefault.jpg","width":480,"height":360}},"channelTitle":"Carlos Azaustre - Aprende JavaScript","playlistId":"UUJgGc8pQO1lv04VXrBxA_Hg","position":2,"resourceId":{"kind":"youtube#video","videoId":"IIZJAVMV1Sc"},"videoOwnerChannelTitle":"Carlos Azaustre - Aprende JavaScript","videoOwnerChannelId":"UCJgGc8pQO1lv04VXrBxA_Hg"}},{"kind":"youtube#playlistItem","etag":"nHB-xe9e8z-1R4IQ8BcAX25PH-4","id":"VVVKZ0djOHBRTzFsdjA0VlhyQnhBX0hnLnlmUnVrM19wdWtv","snippet":{"publishedAt":"2022-06-14T16:01:01Z","channelId":"UCJgGc8pQO1lv04VXrBxA_Hg","title":"La MEJOR forma de recorrer un Objeto en JAVASCRIPT","description":"","thumbnails":{"default":{"url":"https://i.ytimg.com/vi/yfRuk3_puko/default.jpg","width":120,"height":90},"medium":{"url":"https://i.ytimg.com/vi/yfRuk3_puko/mqdefault.jpg","width":320,"height":180},"high":{"url":"https://i.ytimg.com/vi/yfRuk3_puko/hqdefault.jpg","width":480,"height":360},"standard":{"url":"https://i.ytimg.com/vi/yfRuk3_puko/sddefault.jpg","width":640,"height":480},"maxres":{"url":"https://i.ytimg.com/vi/yfRuk3_puko/maxresdefault.jpg","width":1280,"height":720}},"channelTitle":"Carlos Azaustre - Aprende JavaScript","playlistId":"UUJgGc8pQO1lv04VXrBxA_Hg","position":3,"resourceId":{"kind":"youtube#video","videoId":"yfRuk3_puko"},"videoOwnerChannelTitle":"Carlos Azaustre - Aprende JavaScript","videoOwnerChannelId":"UCJgGc8pQO1lv04VXrBxA_Hg"}},{"kind":"youtube#playlistItem","etag":"WQS0LdXxE0v_HjsMtC5ahFN9Imk","id":"VVVKZ0djOHBRTzFsdjA0VlhyQnhBX0hnLk1qdjJDRG9iTkRr","snippet":{"publishedAt":"2022-05-31T16:00:11Z","channelId":"UCJgGc8pQO1lv04VXrBxA_Hg","title":"Que se espera de un PROGRAMADOR JUNIOR","description":"Crea tu portfolio dev con Rviewer y supera sus retos de Programación ¡Evaluados por Tech Mentors! 👉 https://bit.ly/3wKW6k5\n\nDescubre lo que se espera de un perfil programador Junior en sus primeros 1-2 años de experiencia profesional.\n\n¿Quieres saber lo que se espera de un PROGRAMADOR SENIORr?\nMira este otro vídeo ▶ https://www.youtube.com/watch?v=zWXnZPQtYWI\n\n⏱ CONTENIDO\n0:00 Intro\n0:35 Crea tu Portfolio Dev fácilmente\n2:46 Que se espera de ti como JUNIOR\n\n¿Quieres prepararte para una entrevista técnica? Mira estos otros videos que te comparto:\n\n✅ Resuelvo PRUEBA TÉCNICA en REACT para PROGRAMADOR JUNIOR MID\n▶ https://www.youtube.com/watch?v=2Lmz87uYBsw\n\n✅ Resuelvo PRUEBA TECNICA para PROGRAMADOR MID SENIOR\n▶ https://www.youtube.com/watch?v=G6uvuIJ6Af0\n\n✅ Resuelvo prueba de ENTREVISTA TECNICA para PROGRAMADOR JUNIOR FRONTEND\n▶ https://www.youtube.com/watch?v=I27ZJU2_-Og","thumbnails":{"default":{"url":"https://i.ytimg.com/vi/Mjv2CDobNDk/default.jpg","width":120,"height":90},"medium":{"url":"https://i.ytimg.com/vi/Mjv2CDobNDk/mqdefault.jpg","width":320,"height":180},"high":{"url":"https://i.ytimg.com/vi/Mjv2CDobNDk/hqdefault.jpg","width":480,"height":360},"standard":{"url":"https://i.ytimg.com/vi/Mjv2CDobNDk/sddefault.jpg","width":640,"height":480},"maxres":{"url":"https://i.ytimg.com/vi/Mjv2CDobNDk/maxresdefault.jpg","width":1280,"height":720}},"channelTitle":"Carlos Azaustre - Aprende JavaScript","playlistId":"UUJgGc8pQO1lv04VXrBxA_Hg","position":4,"resourceId":{"kind":"youtube#video","videoId":"Mjv2CDobNDk"},"videoOwnerChannelTitle":"Carlos Azaustre - Aprende JavaScript","videoOwnerChannelId":"UCJgGc8pQO1lv04VXrBxA_Hg"}}]
diff --git a/data/pages/sobre-mi.mdx b/data/pages/sobre-mi.mdx
index dc9375d..ffac90f 100755
--- a/data/pages/sobre-mi.mdx
+++ b/data/pages/sobre-mi.mdx
@@ -2,19 +2,19 @@
title: Sobre mí
---
-¡Hola! Mi nombre es **Carlos Azaustre**. Nací hace 35 años en Madrid (España).
+¡Hola! Mi nombre es **Carlos Azaustre**. Nací hace 37 años en Madrid (España).
Estudié [Ingeniería Telemática en la UC3M](http://www.uc3m.es/ss/Satellite/Grado/es/Detalle/Estudio_C/1371212560793/1371212987094/Grado_en_Ingenieria_Telematica#programa)
-y actualmente trabajo [como formador y divulgador de tecnologías web](https://fullstackjs.academy). He trabajado para Google, IBM Research y Eventbrite, además de haber
+He trabajado para Google, IBM Research y Eventbrite, además de haber
cofundado mi propia startup y trabajar como _freelance_.
Estoy reconocido por Google como _Developer Expert_
-[GDE en Tecnologías web](https://google-developers.appspot.com/community/experts/directory/profile/profile-carlos_azaustre).
+[GDE en Tecnologías web](https://developers.google.com/community/experts/directory/profile/profile-carlos-azaustre) y premiado en 2022 como
+[Microsoft MVP (Most Valuable Professional)](https://mvp.microsoft.com/es-es/PublicProfile/5004840?fullName=Carlos%20Azaustre).
-Paralelamente me sigo formando diariamente sobre **JavaScript** y otras tecnologías como **Node.js, Firebase, React y Vue.js**, conocimientos que
-posteriormente comparto. Durante los últimos años he publicado varios ebooks, cursos online e impartido charlas y talleres.
-También publico contenido en [este blog](https://carlosazaustre.es/blog) y en [mi canal de Youtube, al que te animo que se suscribas (¡ya somos más de 30,000!)](https://youtube.com/carlosazaustre?sub_confirmation=1)
+Durante los últimos años he publicado varios ebooks, cursos online e impartido charlas y talleres.
+También publico contenido en [este blog](https://carlosazaustre.es/blog) y en [mi canal de Youtube, al que te animo que se suscribas (¡ya somos más de 100,000!)](https://youtube.com/carlosazaustre?sub_confirmation=1)
-![Carlos Azaustre](/images/sobre-mi/carlosazaustre.jpg)
+![Carlos Azaustre](/images/sobre-mi/carlosazaustre-sobremi.jpeg)
## 🕐 Timeline de mi vida
@@ -30,10 +30,13 @@ También publico contenido en [este blog](https://carlosazaustre.es/blog) y en [
- **2001**: 📟 Instalamos ADSL a 256 Kbps. Un mundo nuevo se abre ante mí.
- **2002**: 🏫 Termino Bachillerato Tecnológico y decido no ir a la Universidad. Estudiaré un ciclo de FP.
- **2004**: 👨🎓 Termino _Desarrollo de Productos Electrónicos_, un Ciclo Formativo de Grado Superior y decido ir a la Universidad a estudiar Telemática.
+
+---
+
- **2005**: 👫 [Paola](https://twitter.com/ggarciapaola) y yo empezamos nuestra relación.
- **2007**: Empiezo el webcomic de [PARDILLOS, una parodia de Perdidos, LOST](http://perdidos-comic.blogspot.com/)
- **2008**: 📓 Publico mi [primer Cómic (Pardillos Primera Temporada) en papel y llega a la FNAC](https://www.fnac.es/a361669/Carlos-Azaustre-Pardillos-1)
-- **2009**: 🏆 Pardillos consigue el [I Premio al Mejor Comic Online en el Salón del Cómic de Madrid](http://perdidos-comic.blogspot.com/2009/12/pardillos-premio-al-mejor-comic-on-line.html).
+- **2009**: 🏆 Pardillos consigue el [I Premio al Mejor Comic Online en el Salón del Cómic de Madrid](http://perdidos-comic.blogspot.com/2009/12/pardillos-premio-al-mejor-comic-on-line.html)
- **2010**:
- 📺 [Nos entrevistan en Cuatroº](https://youtu.be/9Fyaxh_4cWE?t=114), hablando de Pardillos como motivo del lanzamiento en España de LOST.
- 🖥 Compro mi primer iMac.
@@ -43,6 +46,9 @@ También publico contenido en [este blog](https://carlosazaustre.es/blog) y en [
- El último volumen de Pardillos [consigue el 100% de la financiación vía _crowdfunding_ en 24h](https://www.verkami.com/locale/es/projects/1576-pardillos-6%C2%AA-temporada).
- 👨🎓 Me graduo en _Ingeniería Telemática_.
- Paola y yo emigramos a Cork, Irlanda 🇮🇪 durante 1 año trabajando como _Freelances_
+
+---
+
- **2013**: [Viajamos durante más de 1 mes por Estados Unidos](/nuestro-viaje-por-los-usa-como-viajar-de-forma-mas-barata/) 🇺🇸 alojándonos en AirBnB's
- **2014**: 👨🏻💻 Empezamos a desarrollar [Chefly](https://chefly.co) y nos inscribimos en la [10a edición de Tetuan Valley Startup School](https://www.tetuanvalley.com/).
- **2015**:
@@ -55,6 +61,9 @@ También publico contenido en [este blog](https://carlosazaustre.es/blog) y en [
- Nos inscribimos y graduamos con Chefly en la [Online Startup School de Y Combinator](https://www.startupschool.org/presentations/436).
- ✈️ Un año completito, viajando al Google I/O 🇺🇲, al GDD de Krakow 🇵🇱y al GDD India 🇮🇳 entre otros
- 💼 empezando a trabajar en Google en el equipo de _Developer Relations_ coordinando las comunidades tech.
+
+---
+
- **2018**:
- ✈️ Un montón de viajes de por España y Europa relacionados con eventos de Google y Comunidades.
- 👋 Finalizo mi etapa en Google.
@@ -62,78 +71,130 @@ También publico contenido en [este blog](https://carlosazaustre.es/blog) y en [
- **2019**:
- 💻 Comienzo a trabajar en remoto con IBM Research como Senior Frontend Developer.
- 🏅 Google me reconoce como Google Developer Expert (GDE) en Tecnologías Web
+ - 🟣 Hago mi primer directo en [Twitch](https://www.twitch.tv/carlosazaustre)
- 👋 Dejo mi puesto en IBM Research.
- 💻 Empiezo a trabajar en Eventbrite como Senior Frontend Engineer.
- 👶 Nace Elon, mi segundo hijo
+
+---
+
- **2020**
- 🦠 El Coronavirus (COVID-19) nos tiene en cuarentena. 🏠 #QuedateEnCasa
- - 💻 Lanzo la [Fullstack JS Academy](https://fullstackjs.academy)
- 🏡 Nos mudamos a una casa en el campo.
- 👋 Finalizo mi etapa en Eventbrite.
+ - 👾 Creo la comunidad de [Discord PintaAPIs Developers](https://discord.gg/carlosazaustre).
+- **2021**
+ - 💼 [Dejo mi trabajo como programador](https://www.youtube.com/watch?v=Qj5cykko81c) durante un tiempo y me dedico _fulltime_ a compartir contenido sobre programación.
+ - 📚 Publico [_Aprendiendo JavaScript_](http://aprendiendojavascript.com) en papel con Amazon.
+ - 🎓 Empiezo a trabajar como Director del Master desarrollo web fullstack por la Universidad Europea.
+ - 😔 Sufro de ansiedad durante todo el año y entro en depresión.
-## Un pequeño resumen
+---
+
+- **2022**
+ - 🦠 Me contagio de COVID-19 y estoy 2 semanas bastante mal.
+ - 🤩 Me vuelvo a recuperar y me siento mejor que nunca.
+ - 🎬 Vuelvo a compartir contenido sobre programación y JavaScript.
+ - 🐶 Kara nos dejó...
+ - ⭐️ Llegamos a 100,000 seguidores en [Instagram](https://instagram.com/carlosazaustre).
+ - 🏆 [Microsoft me premia como MVP](https://www.youtube.com/watch?v=P2BLsPmDtp0) (Most Valuable Professional) en Tecnologías de Desarrollo.
+ - 🏅 Llegamos a [100,000 suscriptores en YouTube](https://www.youtube.com/watch?v=24OBW2z-MpI).
+ - 🐈 Adoptamos a dos gatitos abandonados.
+ - ⭐️ El servidor de Discord "PintaAPIs Developer" consigue el _Partner_
+
+## 📝 Un pequeño resumen
### Pasado Comiquero/Autoeditor
-Mientras estudiaba Ingeniería Telemática, dedicaba mi tiempo libre a dibujar cómics. Tras un tiempo publicando gratuitamente un [cómic online que parodiaba la serie de TV Lost (Perdidos)](http://perdidos-comic.blogspot.com.es/) me lancé al mundo de la autoedición y [publiqué en papel 'PARDILLOS'](https://www.fnac.es/ia229842/Carlos-Azaustre).
+Mientras estudiaba Ingeniería Telemática, dedicaba mi tiempo libre a dibujar cómics.
+Tras un tiempo publicando gratuitamente un [cómic online que parodiaba la serie de TV Lost
+(Perdidos)](http://perdidos-comic.blogspot.com.es/) me lancé al mundo de la autoedición y
+[publiqué en papel 'PARDILLOS'](https://www.fnac.es/ia229842/Carlos-Azaustre).
-En total fueron 6 títulos que fui publicando desde 2008 a 2012, el último de ellos por medio del [Crowdfunding a través de Verkami](https://www.verkami.com/projects/1576-pardillos-6%C2%AA-temporada), dónde conseguimos [el 100% de la financiación necesaria en menos de 48 horas](http://www.fancueva.com/comic/pardillos-recurre-al-crowdfunding-para-financiar-su-ultima-temporada-y-tarda-2-dias-en-conseguirlo/).
+En total fueron 6 títulos que fui publicando desde 2008 a 2012, el último de ellos por medio del
+[Crowdfunding a través de Verkami](https://www.verkami.com/projects/1576-pardillos-6%C2%AA-temporada),
+dónde conseguimos [el 100% de la financiación necesaria en menos de 48 horas](http://www.fancueva.com/comic/pardillos-recurre-al-crowdfunding-para-financiar-su-ultima-temporada-y-tarda-2-dias-en-conseguirlo/).
-Los cómics tuvieron muy buena acogida, consiguiendo el [Premio al Mejor Webcómic por el Salón del Cómic de Madrid en 2009](http://perdidos-comic.blogspot.com.es/2009/12/pardillos-premio-al-mejor-comic-on-line.html) y Siendo [TOP Ventas de la FNAC durante varios meses. (Llegando incluso al TOP 4 de Libros Generales)](http://entodoelcolodrillo.blogspot.com.es/2011/01/pardillos-entre-los-10-comics-mas.html)
+Los cómics tuvieron muy buena acogida, consiguiendo el
+[Premio al Mejor Webcómic por el Salón del Cómic de Madrid en 2009](http://perdidos-comic.blogspot.com.es/2009/12/pardillos-premio-al-mejor-comic-on-line.html)
+y siendo [TOP Ventas de la FNAC durante varios meses. (Llegando incluso al TOP 4 de Libros Generales)](http://entodoelcolodrillo.blogspot.com.es/2011/01/pardillos-entre-los-10-comics-mas.html)
### Mi etapa de Freelance Viajero (a.k.a. Nómada Digital)
-Tras un tiempo trabajando en consultoras y startups en España y quedarme estancado, [Paola](http://twitter.com/ggarciapaola) y yo emigramos una temporada a Irlanda, en 2012. en concreto a la ciudad de Cork. Allí estuvimos trabajando como Freelances y por primera vez tuve tiempo libre para poder aprender nuevas tecnologías. Aproveché y leí muchos libros técnicos y me formé con varios cursos online.
+Tras un tiempo trabajando en consultoras y startups en España y quedarme estancado,
+[Paola](http://twitter.com/ggarciapaola) y yo emigramos una temporada a Irlanda, en 2012. en concreto a la ciudad de Cork.
+Allí estuvimos trabajando como Freelances y por primera vez tuve tiempo libre para poder aprender nuevas tecnologías.
+Aproveché y leí muchos libros técnicos y me formé con varios cursos online.
-En esa época decidí apostar todo por JavaScript y me centré en Node.js y AngularJS para desarrollar aplicaciones web, aunque no dejé de seguir aprendiendo e investigando día a día.
+En esa época decidí apostar todo por JavaScript y me centré en Node.js y AngularJS para desarrollar aplicaciones web,
+aunque no dejé de seguir aprendiendo e investigando día a día.
Fue por entonces cuando empecé [este blog](/blog) para compartir el conocimiento que iba aprendiendo por el camino.
![Carlos Azaustre en el Googleplex, Mountain View, California](/images/sobre-mi/12689_10151922710569376_548012013_n.jpg)
-Tras casi un año en tierras irlandesas, Paola y yo decidimos [hacer un viaje a Estados Unidos](/nuestro-viaje-por-los-usa-como-viajar-de-forma-mas-barata/), pero no a la manera tradicional. Queríamos pasar al menos un mes por allí y estuvimos alojándonos en habitaciones con [AirBnB](https://www.airbnb.es/c/pgarcia233?s=8), descubriendo otras culturas y formas de ver la vida. Fue un viaje alucinante que un futuro nos gustaría volver a realizar.
+Tras casi un año en tierras irlandesas, Paola y yo decidimos [hacer un viaje a Estados Unidos](/nuestro-viaje-por-los-usa-como-viajar-de-forma-mas-barata/),
+pero no a la manera tradicional. Queríamos pasar al menos un mes por allí y estuvimos alojándonos en habitaciones
+con [AirBnB](https://www.airbnb.es/c/pgarcia233?s=8), descubriendo otras culturas y formas de ver la vida.
+Fue un viaje alucinante que un futuro nos gustaría volver a realizar.
### Mi etapa emprendedora
![carlosazaustre-tetuanvalley](/images/sobre-mi/carlosazaustre-tetuanvalley.png)
-A la vuelta del viaje, volvimos a España y empezamos a trabajar en nuestro proyecto de Startup: [Chefly](https://chefly.co). Fuimos seleccionados por [Tetuan Valley](http://tetuanvalley.com) y al poco tiempo fundamos la empresa.
+A la vuelta del viaje, volvimos a España y empezamos a trabajar en nuestro proyecto de Startup: [Chefly](https://chefly.co).
+Fuimos seleccionados por [Tetuan Valley](http://tetuanvalley.com) y al poco tiempo fundamos la empresa.
-Desde entonces no hemos parado. Fuimos seleccionados con Chefly entre los primeros residentes de [Campus Madrid](http://campus.co/madrid), el edificio de Google para emprendedores y proyectos tecnológicos que hay en Madrid y en otras ciudades como Londres 🇬🇧, Tel Aviv 🇮🇱, Seoul 🇰🇷, Sao Paulo 🇧🇷 y Varsovia 🇵🇱.
+Desde entonces no hemos parado. Fuimos seleccionados con Chefly entre los primeros residentes de [Campus Madrid](http://campus.co/madrid),
+el edificio de Google para emprendedores y proyectos tecnológicos que hay en Madrid y en otras ciudades
+como Londres 🇬🇧, Tel Aviv 🇮🇱, Seoul 🇰🇷, Sao Paulo 🇧🇷 y Varsovia 🇵🇱.
-También fuimos seleccionados por la 1ª [edición online de la Startup School de YCombinator (SUS17)](https://www.startupschool.org/) dónde [nos graduamos](https://www.startupschool.org/presentations/436) después de seguir su programa intensivo de 10 semanas.
+También fuimos seleccionados por la 1ª [edición online de la Startup School de YCombinator (SUS17)](https://www.startupschool.org/)
+dónde [nos graduamos](https://www.startupschool.org/presentations/436) después de seguir su programa intensivo de 10 semanas.
### Mi etapa trabajando con Comunidades Tech
-Colaboro activamente con los [Grupos de Desarrolladores de Google (GDG)](https://gdg.es/) impartiendo charlas y talleres, mentorizando y divulgando conocimiento y estuve un par de años dedicándome a la formación online y para empresas. Y sobre todo, siempre aprendo día a día y lo que puedo, lo comparto en [Youtube](https://youtube.com/carlosazaustre?sub_confirmation=1).
+Colaboro activamente con los [Grupos de Desarrolladores de Google (GDG)](https://gdg.es/) impartiendo charlas y talleres,
+mentorizando y divulgando conocimiento y estuve un par de años dedicándome a la formación online y para empresas. Y sobre todo,
+siempre aprendo día a día y lo que puedo, lo comparto en [Youtube](https://youtube.com/carlosazaustre?sub_confirmation=1).
![carlosazaustre-google-groups-gdg](/images/sobre-mi/carlosazaustre-google-groups-gdg.png)
-Desde Octubre de 2017 a Octubre de 2018, **trabajé para Google en el equipo de [Developer Relations](https://developers.google.com)** como especialista en Comunidades de Desarrolladores/as, ayudando a crecer el ecosistema de comunidades tecnológicas a través de sus programas de Comunidades, GDGs, Women Techmakers y Google Developer Experts en España, Portugal y varios paises de Europa: (Holanda, Dinamarca, Finlandia, Suecia y Noruega).
+Desde Octubre de 2017 a Octubre de 2018, **trabajé para Google en el equipo de [Developer Relations](https://developers.google.com)**
+como especialista en Comunidades de Desarrolladores/as, ayudando a crecer el ecosistema de comunidades tecnológicas a través de sus
+programas de Comunidades, GDGs, Women Techmakers y Google Developer Experts en España, Portugal y varios paises de Europa:
+(Holanda, Dinamarca, Finlandia, Suecia y Noruega).
-Un año increible del que me llevo muchas cosas, buenos amigos, experiencia , habilidades y un largo etcétera que seguro me servirá para el futuro.
+Un año increible del que me llevo muchas cosas, buenos amigos, experiencia , habilidades y
+un largo etcétera que seguro me servirán para el futuro.
### Vuelta al "metal"
-Acabé mi etapa en Google en Noviembre de 2018, y tras un pequeño _break_ en el que estuvimos viviendo un mes en Los Ángeles 🇺🇸, volvimos a España y comencé a trabajar en remoto con el equipo de _Quantum Computing_ de **IBM Research** de Nueva York 🇺🇸 cómo **Senior Frontend Engineer**. Tras un tiempo, cambié de aires por un puesto similar pero para **Eventbrite** desde sus oficinas en Madrid 🇪🇸
+Acabé mi etapa en Google en Noviembre de 2018, y tras un pequeño _break_ en el que estuvimos viviendo un mes en Los Ángeles 🇺🇸,
+volvimos a España y comencé a trabajar en remoto con el equipo de _Quantum Computing_ de **IBM Research** de Nueva York 🇺🇸
+cómo **Senior Frontend Engineer**. Tras un tiempo, cambié de aires por un puesto similar pero para **Eventbrite** desde sus oficinas en Madrid 🇪🇸
-En 2019, **Google** me nombró **Expert en Tecnologías Web** dentro de su programa GDE (Google Developers Experts).
+En 2019, **Google** me nombró **Developer Expert en Tecnologías Web** dentro de su programa GDE (Google Developers Experts).
### Mi etapa como divulgador y formador
-Tras una temporada dedicado al desarrollo de Software decidí tomar un camino alternativo en el mundo de las tecnologías y dedicarme
-más a la parte de formar y compartir conocimiento. Lancé la **[FullstackJS Academy](https://fullstackjs.academy)** con la que pretendo enseñar a programar y todo
-lo necesario para que orientes tu carrera al desarrollo web fullstack.
+Tras una temporada dedicado prácticamente en exclusiva al desarrollo de Software decidí tomar un camino alternativo en el mundo de las tecnologías y dedicarme
+más a la parte de formar y compartir conocimiento. A través de mi canal de [Youtube](https://youtube.com/carlosazaustre?sub_confirmation=1) y de mi blog, comparto todo lo que se y voy aprendiendo
+sobre desarrollo web.
+
+Con varios altibajos, episodios de ansiedad y de incertidumbre, he ido alternando mi trabajo como desarrollador, con mi trabajo como formador y divulgador.
+A día de hoy, lidero la comunidad [PintaAPIs Developers en Discord](https://discord.gg/carlosazaustre), dónde más de 5000 personas comparten recursos, nos ayudamos y crecemos como profesionales
+de la programación.
---
-### Contacto
+### 📬 Contacto
-Puedes encontrarme en [Instagram](https://instagram.com/carlosazaustre) donde prácticamente a diario comparto contenido, ya sea en
-posts o en _stories_. [Sígueme](https://instagram.com/carlosazaustre), somos más de 10,000!
+Puedes encontrarme en [Instagram](https://instagram.com/carlosazaustre) donde comparto contenido semanalmente, ya sea en
+posts, videos cortos o en _stories_. [Sígueme](https://instagram.com/carlosazaustre), somos más de 100,000!
También puedes [mencionarme y seguirme en Twitter (soy @carlosazaustre)](https://twitter.com/carlosazaustre). Suelo estar pendiente de las redes sociales.
### Licencia
-Salvo que indique lo contrario, el código que publico en esta web y en mi repositorio de [GitHub](https://github.com/carlosazaustre) es Open Source y tiene licencia MIT.
+Salvo que indique lo contrario, el código que publico en esta web y en mi repositorio de [GitHub](https://github.com/carlosazaustre/website) es Open Source y tiene licencia MIT.
diff --git a/data/posts/react-vite.mdx b/data/posts/react-vite.mdx
index 4665106..154e17e 100644
--- a/data/posts/react-vite.mdx
+++ b/data/posts/react-vite.mdx
@@ -1,7 +1,7 @@
---
title: "Cómo iniciar un proyecto React con Vite"
date: "2021-07-22"
-tags:
+tags:
- "🧑🏻💻 Desarrollo"
- "React"
---
@@ -15,7 +15,6 @@ una forma muy rápida, ya que no necesitas tener que configurar nada y aprovecha
sistema de módulos de ES6 (ESModules) por lo que puede ser servido dinamicamente según
lo necesite el navegador.
-
### Crear un proyecto React con Vite.
@@ -48,7 +47,7 @@ Despues te pregunta si quieres utilizar TypeScript o no. Elige lo que prefieras.
react-ts
```
-```shell
+```shell
Scaffolding project in /Users/carlosazaustre/dev/vite-project...
Done. Now run:
@@ -59,6 +58,7 @@ Done. Now run:
```
### Correr el proyecto.
+
Una vez creado, dirijete al directorio creado ejecuta el comando de instalación:
```shell
diff --git a/data/sections.js b/data/sections.js
index dd72f46..bfed95f 100644
--- a/data/sections.js
+++ b/data/sections.js
@@ -1,9 +1,10 @@
const sections = [
- { name: "Blog", url: "/blog" },
- { name: "Mentoría", url: "/p/mentoria" },
- { name: "Discord", url: "https://bit.ly/pintaapis" },
+ { name: "🏠", url: "/" },
+ { name: "Acerca de", url: "/p/sobre-mi" },
+ { name: "Artículos", url: "/blog" },
{ name: "Cursos", url: "/cursos" },
- { name: "About", url: "/p/sobre-mi" },
+ // { name: "Conferencias", url: "/conferencias" },
+ // { name: "Mentoría", url: "/p/mentoria" },
];
export default sections;
diff --git a/next-sitemap.js b/next-sitemap.js
index cdc1a46..a3072c9 100644
--- a/next-sitemap.js
+++ b/next-sitemap.js
@@ -7,6 +7,6 @@ module.exports = {
"/clase-gratis",
"/clase-gratis-video",
"/clase-gratis-registro",
- "clase-gratis-formulario",
+ "/clase-gratis-formulario",
],
};
diff --git a/package-lock.json b/package-lock.json
index b146634..c6ee29d 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,6 +12,9 @@
"@chakra-ui/react": "^1.6.3",
"@emotion/react": "^11.4.0",
"@emotion/styled": "^11.3.0",
+ "@fontsource/ibm-plex-mono": "^4.5.12",
+ "@fontsource/ibm-plex-sans": "^4.5.13",
+ "@fontsource/lato": "^4.5.10",
"@fontsource/poppins": "^4.4.5",
"@fontsource/roboto": "^4.4.5",
"@sentry/nextjs": "^6.7.2",
@@ -30,6 +33,8 @@
"react-dom": "17.0.2",
"react-hook-form": "^7.9.0",
"react-icons": "^4.2.0",
+ "react-share": "^4.4.1",
+ "react-vertical-timeline-component": "^3.5.2",
"reading-time": "^1.3.0",
"rehype": "^11.0.0",
"remark-code-titles": "^0.1.2",
@@ -1229,6 +1234,11 @@
"@babel/core": "^7.0.0"
}
},
+ "node_modules/@emotion/babel-plugin/node_modules/stylis": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.2.tgz",
+ "integrity": "sha512-Nn2CCrG2ZaFziDxaZPN43CXqn+j7tcdjPFCkRBkFue8QYXC2HdEwnw5TCBo4yQZ2WxKYeSi0fdoOrtEqgDrXbA=="
+ },
"node_modules/@emotion/cache": {
"version": "11.4.0",
"resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.4.0.tgz",
@@ -1241,6 +1251,11 @@
"stylis": "^4.0.3"
}
},
+ "node_modules/@emotion/cache/node_modules/stylis": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.2.tgz",
+ "integrity": "sha512-Nn2CCrG2ZaFziDxaZPN43CXqn+j7tcdjPFCkRBkFue8QYXC2HdEwnw5TCBo4yQZ2WxKYeSi0fdoOrtEqgDrXbA=="
+ },
"node_modules/@emotion/hash": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
@@ -1342,6 +1357,21 @@
"resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
"integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
},
+ "node_modules/@fontsource/ibm-plex-mono": {
+ "version": "4.5.12",
+ "resolved": "https://registry.npmjs.org/@fontsource/ibm-plex-mono/-/ibm-plex-mono-4.5.12.tgz",
+ "integrity": "sha512-ysF4GfudxLgDnpycjzrHFKqsEMOYHt0IUJN6dRECg6YLvVggLMj/SPh+w0QWjdgXkIbjqIbcho0O5mNcLCJMiQ=="
+ },
+ "node_modules/@fontsource/ibm-plex-sans": {
+ "version": "4.5.13",
+ "resolved": "https://registry.npmjs.org/@fontsource/ibm-plex-sans/-/ibm-plex-sans-4.5.13.tgz",
+ "integrity": "sha512-7oDAqvuIArnMJck/JBqCnQZwqL4za+5xG+1Gu4enYbGcGqmUPktiuOy1i0N3XrzrNO70ZvsSt1Rdkxr2oemE6Q=="
+ },
+ "node_modules/@fontsource/lato": {
+ "version": "4.5.10",
+ "resolved": "https://registry.npmjs.org/@fontsource/lato/-/lato-4.5.10.tgz",
+ "integrity": "sha512-2hYR6r661Cq9B8zugtu6yxuOKqrVhAgfOSaPSq8XoxbC4ebsl0KOTy/vPoP+9U7JuQVLfrmikirW4a9Z0nDUug=="
+ },
"node_modules/@fontsource/poppins": {
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/@fontsource/poppins/-/poppins-4.4.5.tgz",
@@ -4378,6 +4408,27 @@
"node": ">=6"
}
},
+ "node_modules/jsonp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz",
+ "integrity": "sha512-pfog5gdDxPdV4eP7Kg87M8/bHgshlZ5pybl+yKxAnCZ5O7lCIn7Ixydj03wOlnDQesky2BPyA91SQ+5Y/mNwzw==",
+ "dependencies": {
+ "debug": "^2.1.3"
+ }
+ },
+ "node_modules/jsonp/node_modules/debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "dependencies": {
+ "ms": "2.0.0"
+ }
+ },
+ "node_modules/jsonp/node_modules/ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ },
"node_modules/kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -5805,6 +5856,14 @@
"react": "*"
}
},
+ "node_modules/react-intersection-observer": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-8.34.0.tgz",
+ "integrity": "sha512-TYKh52Zc0Uptp5/b4N91XydfSGKubEhgZRtcg1rhTKABXijc4Sdr1uTp5lJ8TN27jwUsdXxjHXtHa0kPj704sw==",
+ "peerDependencies": {
+ "react": "^15.0.0 || ^16.0.0 || ^17.0.0|| ^18.0.0"
+ }
+ },
"node_modules/react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -5873,6 +5932,27 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
+ "node_modules/react-share": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/react-share/-/react-share-4.4.1.tgz",
+ "integrity": "sha512-AJ9m9RiJssqvYg7MoJUc9J0D7b/liWrsfQ99ndKc5vJ4oVHHd4Fy87jBlKEQPibT40oYA3AQ/a9/oQY6/yaigw==",
+ "dependencies": {
+ "classnames": "^2.3.2",
+ "jsonp": "^0.2.1"
+ },
+ "engines": {
+ "node": ">=6.9.0",
+ "npm": ">=5.0.0"
+ },
+ "peerDependencies": {
+ "react": "^16.3.0 || ^17 || ^18"
+ }
+ },
+ "node_modules/react-share/node_modules/classnames": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+ "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+ },
"node_modules/react-style-singleton": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.1.1.tgz",
@@ -5900,6 +5980,17 @@
"resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz",
"integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg=="
},
+ "node_modules/react-vertical-timeline-component": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/react-vertical-timeline-component/-/react-vertical-timeline-component-3.5.2.tgz",
+ "integrity": "sha512-Wcb85NUvmygLFF45bfxVGU4AyHOBjdQY9IqB8uLG1jXWvIthkQft1ZJOGirIlYHSYnDl9sOs8ItL1sNtqA7GUg==",
+ "hasInstallScript": true,
+ "dependencies": {
+ "classnames": "^2.2.6",
+ "prop-types": "^15.7.2",
+ "react-intersection-observer": "^8.26.2"
+ }
+ },
"node_modules/readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -6543,16 +6634,11 @@
"node": ">= 8"
}
},
- "node_modules/styled-jsx/node_modules/stylis": {
+ "node_modules/stylis": {
"version": "3.5.4",
"resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz",
"integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q=="
},
- "node_modules/stylis": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz",
- "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg=="
- },
"node_modules/stylis-rule-sheet": {
"version": "0.0.10",
"resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz",
@@ -8078,6 +8164,13 @@
"find-root": "^1.1.0",
"source-map": "^0.5.7",
"stylis": "^4.0.3"
+ },
+ "dependencies": {
+ "stylis": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.2.tgz",
+ "integrity": "sha512-Nn2CCrG2ZaFziDxaZPN43CXqn+j7tcdjPFCkRBkFue8QYXC2HdEwnw5TCBo4yQZ2WxKYeSi0fdoOrtEqgDrXbA=="
+ }
}
},
"@emotion/cache": {
@@ -8090,6 +8183,13 @@
"@emotion/utils": "^1.0.0",
"@emotion/weak-memoize": "^0.2.5",
"stylis": "^4.0.3"
+ },
+ "dependencies": {
+ "stylis": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.2.tgz",
+ "integrity": "sha512-Nn2CCrG2ZaFziDxaZPN43CXqn+j7tcdjPFCkRBkFue8QYXC2HdEwnw5TCBo4yQZ2WxKYeSi0fdoOrtEqgDrXbA=="
+ }
}
},
"@emotion/hash": {
@@ -8168,6 +8268,21 @@
"resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz",
"integrity": "sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA=="
},
+ "@fontsource/ibm-plex-mono": {
+ "version": "4.5.12",
+ "resolved": "https://registry.npmjs.org/@fontsource/ibm-plex-mono/-/ibm-plex-mono-4.5.12.tgz",
+ "integrity": "sha512-ysF4GfudxLgDnpycjzrHFKqsEMOYHt0IUJN6dRECg6YLvVggLMj/SPh+w0QWjdgXkIbjqIbcho0O5mNcLCJMiQ=="
+ },
+ "@fontsource/ibm-plex-sans": {
+ "version": "4.5.13",
+ "resolved": "https://registry.npmjs.org/@fontsource/ibm-plex-sans/-/ibm-plex-sans-4.5.13.tgz",
+ "integrity": "sha512-7oDAqvuIArnMJck/JBqCnQZwqL4za+5xG+1Gu4enYbGcGqmUPktiuOy1i0N3XrzrNO70ZvsSt1Rdkxr2oemE6Q=="
+ },
+ "@fontsource/lato": {
+ "version": "4.5.10",
+ "resolved": "https://registry.npmjs.org/@fontsource/lato/-/lato-4.5.10.tgz",
+ "integrity": "sha512-2hYR6r661Cq9B8zugtu6yxuOKqrVhAgfOSaPSq8XoxbC4ebsl0KOTy/vPoP+9U7JuQVLfrmikirW4a9Z0nDUug=="
+ },
"@fontsource/poppins": {
"version": "4.4.5",
"resolved": "https://registry.npmjs.org/@fontsource/poppins/-/poppins-4.4.5.tgz",
@@ -10515,6 +10630,29 @@
"minimist": "^1.2.5"
}
},
+ "jsonp": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/jsonp/-/jsonp-0.2.1.tgz",
+ "integrity": "sha512-pfog5gdDxPdV4eP7Kg87M8/bHgshlZ5pybl+yKxAnCZ5O7lCIn7Ixydj03wOlnDQesky2BPyA91SQ+5Y/mNwzw==",
+ "requires": {
+ "debug": "^2.1.3"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "2.6.9",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+ "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+ "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="
+ }
+ }
+ },
"kind-of": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
@@ -11667,6 +11805,12 @@
"integrity": "sha512-rmzEDFt+AVXRzD7zDE21gcxyBizD/3NqjbX6cmViAgdqfJ2UiLer8927/QhhrXQV7dEj/1EGuOTPp7JnLYVJKQ==",
"requires": {}
},
+ "react-intersection-observer": {
+ "version": "8.34.0",
+ "resolved": "https://registry.npmjs.org/react-intersection-observer/-/react-intersection-observer-8.34.0.tgz",
+ "integrity": "sha512-TYKh52Zc0Uptp5/b4N91XydfSGKubEhgZRtcg1rhTKABXijc4Sdr1uTp5lJ8TN27jwUsdXxjHXtHa0kPj704sw==",
+ "requires": {}
+ },
"react-is": {
"version": "16.13.1",
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
@@ -11712,6 +11856,22 @@
}
}
},
+ "react-share": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/react-share/-/react-share-4.4.1.tgz",
+ "integrity": "sha512-AJ9m9RiJssqvYg7MoJUc9J0D7b/liWrsfQ99ndKc5vJ4oVHHd4Fy87jBlKEQPibT40oYA3AQ/a9/oQY6/yaigw==",
+ "requires": {
+ "classnames": "^2.3.2",
+ "jsonp": "^0.2.1"
+ },
+ "dependencies": {
+ "classnames": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz",
+ "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw=="
+ }
+ }
+ },
"react-style-singleton": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.1.1.tgz",
@@ -11729,6 +11889,16 @@
}
}
},
+ "react-vertical-timeline-component": {
+ "version": "3.5.2",
+ "resolved": "https://registry.npmjs.org/react-vertical-timeline-component/-/react-vertical-timeline-component-3.5.2.tgz",
+ "integrity": "sha512-Wcb85NUvmygLFF45bfxVGU4AyHOBjdQY9IqB8uLG1jXWvIthkQft1ZJOGirIlYHSYnDl9sOs8ItL1sNtqA7GUg==",
+ "requires": {
+ "classnames": "^2.2.6",
+ "prop-types": "^15.7.2",
+ "react-intersection-observer": "^8.26.2"
+ }
+ },
"readable-stream": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
@@ -12242,18 +12412,13 @@
"version": "0.7.3",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz",
"integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ=="
- },
- "stylis": {
- "version": "3.5.4",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz",
- "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q=="
}
}
},
"stylis": {
- "version": "4.0.10",
- "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.0.10.tgz",
- "integrity": "sha512-m3k+dk7QeJw660eIKRRn3xPF6uuvHs/FFzjX3HQ5ove0qYsiygoAhwn5a3IYKaZPo5LrYD0rfVmtv1gNY1uYwg=="
+ "version": "3.5.4",
+ "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz",
+ "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q=="
},
"stylis-rule-sheet": {
"version": "0.0.10",
diff --git a/package.json b/package.json
index 1b9722d..1c20ba1 100644
--- a/package.json
+++ b/package.json
@@ -6,7 +6,6 @@
"dev": "next dev",
"generate:rss": "node ./scripts/generate-rss.js",
"generate:videos": "node ./scripts/generate-video-data.js",
- "generate:podcasts": "node ./scripts/generate-podcast-data.js",
"prebuild": "npm run generate:rss",
"build": "next build",
"postbuild": "next-sitemap",
@@ -17,8 +16,9 @@
"@chakra-ui/react": "^1.6.3",
"@emotion/react": "^11.4.0",
"@emotion/styled": "^11.3.0",
+ "@fontsource/ibm-plex-mono": "^4.5.12",
+ "@fontsource/ibm-plex-sans": "^4.5.13",
"@fontsource/poppins": "^4.4.5",
- "@fontsource/roboto": "^4.4.5",
"@sentry/nextjs": "^6.7.2",
"date-fns": "^2.22.1",
"disqus-react": "^1.1.0",
@@ -35,6 +35,8 @@
"react-dom": "17.0.2",
"react-hook-form": "^7.9.0",
"react-icons": "^4.2.0",
+ "react-share": "^4.4.1",
+ "react-vertical-timeline-component": "^3.5.2",
"reading-time": "^1.3.0",
"rehype": "^11.0.0",
"remark-code-titles": "^0.1.2",
diff --git a/pages/[slug].js b/pages/[slug].js
index 2f90e87..dcc3e07 100644
--- a/pages/[slug].js
+++ b/pages/[slug].js
@@ -1,12 +1,13 @@
import { MDXRemote } from "next-mdx-remote";
-import { MDXComponents, Layout, ScrollToTop } from "@/components";
+import { MDXComponents, Layout, ScrollToTop, TwitterShare } from "@/components";
import { getFiles, getFileBySlug } from "@/lib/mdx";
export default function Post({ source, frontmatter }) {
return (
+
);
@@ -19,7 +20,6 @@ export async function getStaticPaths() {
slug: post.replace(/\.mdx/, ""),
},
}));
- console.log("PATHS: ", JSON.stringify(paths));
return {
paths,
diff --git a/pages/api/sendMail.js b/pages/api/sendMail.js
deleted file mode 100644
index 60d2f8f..0000000
--- a/pages/api/sendMail.js
+++ /dev/null
@@ -1,27 +0,0 @@
-const mailgunSdk = require("mailgun-js");
-import { withSentry } from "@sentry/nextjs";
-
-const apiKey = process.env.MAILGUN_API_KEY;
-const domain = process.env.MAILGUN_DOMAIN;
-const mailgun = mailgunSdk({ apiKey, domain });
-
-async function handler(req, res) {
- const { name, email, text } = req.body;
- const data = {
- from: `${name} <${email}>`,
- to: "hola@carlosazaustre.es",
- subject: "Mensaje enviado desde formulario de contacto (blog)",
- text,
- };
-
- let response;
- try {
- response = await mailgun.messages().send(data);
- } catch (error) {
- return res.status(error.statusCode || 500).json({ error: error.message });
- }
-
- return res.status(200).json({ result: response.message });
-}
-
-export default withSentry(handler);
diff --git a/pages/blog.js b/pages/blog.js
index 68461e7..90ae367 100644
--- a/pages/blog.js
+++ b/pages/blog.js
@@ -55,7 +55,7 @@ export default function Blog({ posts }) {
};
return (
-
+
{currentPosts &&
currentPosts.map((post) => (
diff --git a/pages/cursos.js b/pages/cursos.js
index a69e983..e54a2fe 100644
--- a/pages/cursos.js
+++ b/pages/cursos.js
@@ -1,6 +1,6 @@
import NextLink from "next/link";
-import { Layout, CourseListItem } from "@/components";
+import { Layout, CourseListItem, elements as UI } from "@/components";
import { getAllFilesFrontMatter } from "@/lib/mdx";
export default function Courses({ courses }) {
@@ -9,14 +9,20 @@ export default function Courses({ courses }) {
};
return (
-
- {courses.map((course) => (
-
-
-
-
-
- ))}
+
+
+ Aprende las últimas tecnologías web siguiendo los siguientes cursos en
+ vídeo gratuitos.
+
+ {courses
+ .map((course) => (
+
+
+
+
+
+ ))
+ .reverse()}
);
}
diff --git a/pages/index.js b/pages/index.js
index 46ce7c5..1973c4e 100644
--- a/pages/index.js
+++ b/pages/index.js
@@ -1,84 +1,152 @@
import { Fragment } from "react";
import Link from "next/link";
-import styled from "@emotion/styled";
-
import { getAllFilesFrontMatter } from "@/lib/mdx";
import { orderByDate } from "@/lib/order-by-date";
+import { formatDate } from "@/lib/format-date";
import {
elements as UI,
- Header,
- Hero,
- Book,
+ PostListItem,
Footer,
- AboutCardHome,
- BlogCardHome,
- ContactCardHome,
OpenGraph,
+ SocialNetworks,
+ SectionLinks,
+ SpotifyPodcast,
+ NewsletterFormCard,
} from "@/components";
-
-const StyledMain = styled.main`
- display: flex;
- flex-direction: column;
- overflow: hidden;
-
- @media screen and (min-width: 1025px) {
- height: 82vh;
- max-height: 700px;
- flex-direction: row;
- }
-
- @media screen and (min-width: 1280px) {
- background-image: url("/assets/carlosazaustre-profile-image-large.png");
- background-repeat: no-repeat;
- background-position: right bottom;
- background-size: contain;
- }
-`;
+import latestVideos from "@/data/latestVideos.json";
export default function Home({ posts }) {
return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
-
-
-
-
-
+
+
+ Carlos Azaustre
+
+
+ Desarrollador y Formador en JavaScript.
+
+
+
+ Ingeniero en Telemática, con 10+ años de experiencia, trabajando
+ en empresas como Google, IBM y Eventbrite. Divulgador y creador
+ de contenido sobre programación y desarrollo web a través de
+ YouTube. Google Developer Expert (GDE) en Web. Premiado como
+ Microsoft MVP en 2022.
+
+
+
+
+
+
+
+
+
+
+
+
+ Últimas publicaciones
+
+ {posts.map((post) => (
+
+
+
+
+
+ ))}
+
+ Ver todas →
+
+
+
+
+
+ Último vídeo en YouTube
+
+
+
+
+ {latestVideos[0]?.snippet?.title}
+
+
+
+ Último podcast
+
+
+
+
+
@@ -90,7 +158,7 @@ export default function Home({ posts }) {
export async function getStaticProps() {
const allPosts = await getAllFilesFrontMatter("posts");
- const posts = allPosts.sort(orderByDate).slice(0, 5);
+ const posts = allPosts.sort(orderByDate).slice(0, 10);
return {
props: { posts },
diff --git a/pages/info.js b/pages/info.js
deleted file mode 100644
index 52a21cf..0000000
--- a/pages/info.js
+++ /dev/null
@@ -1,183 +0,0 @@
-import NextImage from "next/image";
-import {Flex, Img } from "../components/elements";
-
-import {
- YouTube,
- SpotifyPodcast,
- elements as UI,
- socialBtns as Social,
-} from "@/components";
-import latestVideos from "@/data/latestVideos.json";
-import latestPodcasts from "@/data/latestPodcasts.json";
-
-const Item = ({ children, href }) => {
- return (
-
-
- {children}
-
-
- );
-};
-
-const MediaItem = ({ imageSrc, size, href, title }) => {
- return (
-
-
-
-
- {title}
-
-
- );
-};
-
-const SectionTitle = ({ children }) => {
- return (
-
- {children}
-
- );
-};
-
-const Header = ({ avatar, username, description }) => {
- return (
-
-
-
-
-
- {username}
-
-
- {description}
-
-
- );
-};
-
-const Container = ({ children }) => {
- return (
-
- {children}
-
- );
-};
-
-const InnerContainer = ({ children }) => {
- return (
-
- {children}
-
- );
-};
-
-export default function Info() {
- const lastVideoId = latestVideos[0]?.snippet?.resourceId?.videoId;
- const titleVideo = latestVideos[0]?.snippet?.title;
-
- return (
-
-
-
- 📺 Último video en YouTube
-
- 🎧 Escucha el podcast
-
-
- Recursos
-
-
-
-
-
-
-
-
-
- - Únete a la comunidad en Discord (+1.4K)
- - Reserva una mentoría 1:1 personalizada
- -
- Mantente al día apuntándote a la Newsletter
-
-
-
-
-
- Cursos Gratis
-
-
-
- carlosazaustre.es
-
-
- );
-}
diff --git a/pages/libros/aprendiendo-javascript.js b/pages/libros/aprendiendo-javascript.js
index 037d8aa..1dfba3e 100644
--- a/pages/libros/aprendiendo-javascript.js
+++ b/pages/libros/aprendiendo-javascript.js
@@ -3,17 +3,18 @@ import {
LayoutLanding,
SellItem,
ReviewCard,
- Rating,
elements as UI,
icons as Icons,
} from "@/components";
+import { Icon } from "@chakra-ui/react";
const BuyOnAmazon = () => (
-
+
(
fontFamily="heading"
>
(
{/* Hero Section */}
-
-
+
+ Aprendiendo JavaScript
+
+
+
-
-
- Aprendiendo JavaScript
-
-
+
+
Aprende las bases del lenguaje web más demandado. Desde cero hasta
ECMAScript 6+. Partiendo de las bases y poco a poco ampliándose
hasta ver las nuevas características del lenguaje para hacer un uso
profesional de él.
-
-
-
-
-
- Disponible en versión digital
-
-
- PDF | ePub | Mobi
-
-
-
-
-
- {/* Content Section */}
-
-
-
- 30 Valoraciones en Amazon
+ 74 Valoraciones en Amazon
-
-
-
-
- No solamente es una guía de referencia, es un libro muy visual, que
- además, te enseña buenas prácticas y consejos a tomar en
- consideración. Carlos ha logrado simplificar la complejidad de
- muchos de los conceptos de JavaScript con base en ejemplos y
- referencias de una manera muy sencilla y divertida. Aprendiendo
- JavaScript rompe con el estereotipo: "No hay libros buenos en
- español sobre JavaScript/Programación". Si quieres aprender, mejorar
- o sólo consultar, este es el libro indicado.
-
-
- Un excelente libro para aquellas persona sque quieren iniciar en el
- mundo del JavaScript
-
-
- Soy ingeniero desde hace años y siempre he usado Javascript a "la
- rápida". Copio de aquí, corrijo de allá, pero nunca me senté
- tranquilamente a leer sobre él. Aprendiendo JavaScript me ha
- parecido genial. Gracias a este libro he logrado comprender mejor el
- lenguaje y he encontrado nuevos trucos que aplicar.
-
+
+
+
+
+
+
+
+
+
-
+
+
-
- Para quién es este libro
-
-
- Para todas aquellas personas que quieran aprender JavaScript desde
- cero y tengan pequeñas nociones de programación.
-
-
- También útil para aquellas personas que llevan tiempo programando,
- utilizan JavaScript y quieren afianzar las bases del lenguaje.
+
+ Disponible en versión digital
+
+ PDF | ePub | Mobi
+
+
+
-
- Contenido
-
-
- 100 Páginas en español donde se cubren los principales elementos de
- la programación, aplicados al lenguaje JavaScript, y poco a poco se
- va incrementando la complejidad viendo las características más
- importantes del lenguaje que lo hacen tan especial y popular.
-
-
-
-
- Breve Historia de JavaScript
-
-
-
- Tipos de datos y Variables
-
-
-
- Operadores
-
-
-
- Condicionales
-
-
-
- Clases Core y Módulos de JavaScript
-
-
-
- Bucles
-
-
-
- Funciones
-
-
-
- JSON
-
-
-
- AJAX
-
-
-
- Eventos
-
-
-
- Asincronía y Promesas
-
-
-
- DOM - Document Object Model
-
-
-
- ECMAScript v6 y más
-
-
+
+ Lo que dicen los lectores
+
-
- Sobre el Autor
-
-
-
-
-
+
+
+ No solamente es una guía de referencia, es un libro muy visual, que
+ además, te enseña buenas prácticas y consejos a tomar en
+ consideración. Carlos ha logrado simplificar la complejidad de muchos
+ de los conceptos de JavaScript con base en ejemplos y referencias de
+ una manera muy sencilla y divertida. Aprendiendo JavaScript rompe con
+ el estereotipo: "No hay libros buenos en español sobre
+ JavaScript/Programación". Si quieres aprender, mejorar o sólo
+ consultar, este es el libro indicado.
+
+
+
+ Un excelente libro para aquellas persona sque quieren iniciar en el
+ mundo del JavaScript
+
+
+
+ Soy ingeniero desde hace años y siempre he usado Javascript a "la
+ rápida". Copio de aquí, corrijo de allá, pero nunca me senté
+ tranquilamente a leer sobre él. Aprendiendo JavaScript me ha parecido
+ genial. Gracias a este libro he logrado comprender mejor el lenguaje y
+ he encontrado nuevos trucos que aplicar.
+
+
-
- Carlos Azaustre (Madrid, 1984). Ingeniero en
- Telemática. 10 años como Desarrollador de Software y actualmente
- Director del Máster en Desarrollo Web FullStack de la Universidad
- Europea de Madrid.
-
-
- Divulgador de tecnologías web a través de YouTube. Reconocido por
- Google como Developer Expert (GDE) en Web. Ha trabajado en
- empresas como Google, IBM y Eventbrite.
-
-
-
- Sobre este libro
-
-
- JavaScript es el lenguaje de la web. Si necesitas programar en un
- navegador web, necesitas JavaScript.
-
-
- Gracias a el tenemos aplicaciones como Gmail, o Twitter, que son
- fuertemente dinámicas y hacen que la experiencia de uso sea mucho
- mejor que antaño, cuando las páginas web tenían que recargarse cada
- vez que realizábamos una acción.
+ {/* Content Section */}
+
+
+ Para quién es este libro
+
+
+ Para todas aquellas personas que quieran aprender JavaScript desde
+ cero y tengan pequeñas nociones de programación.
+
+
+ También útil para aquellas personas que llevan tiempo programando,
+ utilizan JavaScript y quieren afianzar las bases del lenguaje.
+
+
+
+ Contenido
+
+
+
+ 100 Páginas en español donde se cubren los principales elementos de la
+ programación, aplicados al lenguaje JavaScript, y poco a poco se va
+ incrementando la complejidad viendo las características más
+ importantes del lenguaje que lo hacen tan especial y popular.
+
+
+
+
+
+ Breve Historia de JavaScript
+
+
+
+ Tipos de datos y Variables
+
+
+
+ Operadores
+
+
+
+ Condicionales
+
+
+
+ Clases Core y Módulos de JavaScript
+
+
+
+ Bucles
+
+
+
+ Funciones
+
+
+
+ JSON
+
+
+
+ AJAX
+
+
+
+ Eventos
+
+
+
+ Asincronía y Promesas
+
+
+
+ DOM - Document Object Model
+
+
+
+ ECMAScript v6 y más
+
+
+
+
+ Sobre el Autor
+
+
+
+
+
+
+
+ Carlos Azaustre (Madrid, España. 1984) Ingeniero en
+ Telemática. Más de 10 años como desarrollador de software. Ha
+ trabajado en empresas como Google, IBM y Eventbrite. Divulgador y
+ creador de contenido sobre programación a través de YouTube, canal
+ el cuál tiene más de 100.000 suscriptores y más de 5 millones de
+ visitas.
- Es un lenguaje muy demandado en la industría hoy en día, ya que
- además de utilizarse en el navegador, tambiénpuede usarse en el lado
- del servidor (Node.js). Con la multitud de frameworks que existen
- pueden crearse Single Page Applications que emulan la experiencia de
- una aplicación móvil en el navegador.
- También pueden crearse aplicaciones híbridas con herramientas como
- Ionic y Cordova. ¿Has oído hablar del desarrollo basado en
- componentes? Te sonarán entonces Lit-Element, React. Con React
- Native puedes crear aplicaciones nativas para iOS y Android con
- únicamente JavaScript. ¿Aplicaciones Isomórficas? Hoy en día todo es
- posible con JavaScript.
+ Reconocido por Google como Developer Expert (GDE) en tecnologías
+ Web. Premiado por Microsoft en 2022 comoo MVP (Most Valuable
+ Professional).
+
+
+ Sobre este libro
+
+
+ JavaScript es el lenguaje de la web. Si necesitas programar en un
+ navegador web, necesitas JavaScript.
+
+
+ Gracias a el tenemos aplicaciones como Gmail, o Twitter, que son
+ fuertemente dinámicas y hacen que la experiencia de uso sea mucho
+ mejor que antaño, cuando las páginas web tenían que recargarse cada
+ vez que realizábamos una acción.
+
+ Es un lenguaje muy demandado en la industría hoy en día, ya que además
+ de utilizarse en el navegador, tambiénpuede usarse en el lado del
+ servidor (Node.js). Con la multitud de frameworks que existen pueden
+ crearse Single Page Applications que emulan la experiencia de una
+ aplicación móvil en el navegador.
+
+ También pueden crearse aplicaciones híbridas con herramientas como
+ Ionic y Cordova. ¿Has oído hablar del desarrollo basado en
+ componentes? Te sonarán entonces Lit-Element, React. Con React Native
+ puedes crear aplicaciones nativas para iOS y Android con únicamente
+ JavaScript. ¿Aplicaciones Isomórficas? Hoy en día todo es posible con
+ JavaScript.
+
-
-
-
+
+
);
}
diff --git a/public/assets/carlos_azaustre.png b/public/assets/carlos_azaustre.png
new file mode 100644
index 0000000..dfddbb8
Binary files /dev/null and b/public/assets/carlos_azaustre.png differ
diff --git a/public/images/sobre-mi/carlosazaustre-sobremi.jpeg b/public/images/sobre-mi/carlosazaustre-sobremi.jpeg
new file mode 100644
index 0000000..850d591
Binary files /dev/null and b/public/images/sobre-mi/carlosazaustre-sobremi.jpeg differ
diff --git a/public/rss.xml b/public/rss.xml
index 9afd012..befae45 100644
--- a/public/rss.xml
+++ b/public/rss.xml
@@ -4,9 +4,9 @@
https://carlosazaustre.es
RSS for Node
- Sun, 04 Jul 2021 06:33:55 GMT
+ Tue, 25 Oct 2022 16:07:27 GMT
-
+
-
@@ -23,13 +23,6 @@
Sat, 23 Jan 2016 00:00:00 GMT
- -
-
- https://carlosazaustre.es/angular-2-primeros-pasos
- https://carlosazaustre.es/angular-2-primeros-pasos
-
- Mon, 09 Nov 2015 00:00:00 GMT
-
-
https://carlosazaustre.es/2016
@@ -38,11 +31,20 @@
Tue, 03 Jan 2017 00:00:00 GMT
-
-
- https://carlosazaustre.es/aplicacion-node-como-servicio-upstart
- https://carlosazaustre.es/aplicacion-node-como-servicio-upstart
+
+ https://carlosazaustre.es/acortador-urls
+ https://carlosazaustre.es/acortador-urls
- Fri, 04 Mar 2016 00:00:00 GMT
+
+
+ Fri, 16 Jul 2021 00:00:00 GMT
+
+ -
+
+ https://carlosazaustre.es/angular-2-rutas-y-componentes
+ https://carlosazaustre.es/angular-2-rutas-y-componentes
+
+ Wed, 11 Nov 2015 00:00:00 GMT
-
@@ -52,11 +54,11 @@
Tue, 17 Nov 2015 00:00:00 GMT
-
-
- https://carlosazaustre.es/angular-2-rutas-y-componentes
- https://carlosazaustre.es/angular-2-rutas-y-componentes
+
+ https://carlosazaustre.es/angular-2-primeros-pasos
+ https://carlosazaustre.es/angular-2-primeros-pasos
- Wed, 11 Nov 2015 00:00:00 GMT
+ Mon, 09 Nov 2015 00:00:00 GMT
-
@@ -72,6 +74,13 @@
Fri, 17 Jun 2016 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/banco-online-sin-comisiones
+ https://carlosazaustre.es/banco-online-sin-comisiones
+
+ Fri, 24 Aug 2018 00:00:00 GMT
+
-
https://carlosazaustre.es/autenticacion-con-token-en-node-js
@@ -79,13 +88,6 @@
Mon, 23 Feb 2015 00:00:00 GMT
- -
-
- https://carlosazaustre.es/automatizando-tu-flujo-de-trabajo-en-el-frontend-con-gulpjs
- https://carlosazaustre.es/automatizando-tu-flujo-de-trabajo-en-el-frontend-con-gulpjs
-
- Sat, 26 Jul 2014 00:00:00 GMT
-
-
https://carlosazaustre.es/automatizar-tareas-en-javascript-con-grunt-js
@@ -94,18 +96,18 @@
Thu, 01 Aug 2013 00:00:00 GMT
-
-
- https://carlosazaustre.es/banco-online-sin-comisiones
- https://carlosazaustre.es/banco-online-sin-comisiones
-
- Fri, 24 Aug 2018 00:00:00 GMT
+
+ https://carlosazaustre.es/automatizando-tu-flujo-de-trabajo-en-el-frontend-con-gulpjs
+ https://carlosazaustre.es/automatizando-tu-flujo-de-trabajo-en-el-frontend-con-gulpjs
+
+ Sat, 26 Jul 2014 00:00:00 GMT
-
-
- https://carlosazaustre.es/browserify-desarrollando-tu-frontend-como-en-node-js
- https://carlosazaustre.es/browserify-desarrollando-tu-frontend-como-en-node-js
+
+ https://carlosazaustre.es/aplicacion-node-como-servicio-upstart
+ https://carlosazaustre.es/aplicacion-node-como-servicio-upstart
- Thu, 12 Mar 2015 00:00:00 GMT
+ Fri, 04 Mar 2016 00:00:00 GMT
-
@@ -114,6 +116,13 @@
Fri, 19 Dec 2014 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/browserify-desarrollando-tu-frontend-como-en-node-js
+ https://carlosazaustre.es/browserify-desarrollando-tu-frontend-como-en-node-js
+
+ Thu, 12 Mar 2015 00:00:00 GMT
+
-
https://carlosazaustre.es/chefly-en-google-launchpad-madrid-marketing
@@ -163,13 +172,6 @@
Fri, 25 May 2018 00:00:00 GMT
- -
-
- https://carlosazaustre.es/como-pasar-variables-como-atributos-en-directivas-de-angularjs
- https://carlosazaustre.es/como-pasar-variables-como-atributos-en-directivas-de-angularjs
-
- Mon, 15 Jun 2015 00:00:00 GMT
-
-
https://carlosazaustre.es/como-funciona-redux-conceptos-basicos
@@ -184,6 +186,13 @@
Mon, 16 Jun 2014 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/como-pasar-variables-como-atributos-en-directivas-de-angularjs
+ https://carlosazaustre.es/como-pasar-variables-como-atributos-en-directivas-de-angularjs
+
+ Mon, 15 Jun 2015 00:00:00 GMT
+
-
https://carlosazaustre.es/como-relacionar-tus-modelos-en-mongodb
@@ -191,6 +200,13 @@
Sun, 18 Jan 2015 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/como-servir-tu-api-rest-en-node-js-a-traves-de-nginx
+ https://carlosazaustre.es/como-servir-tu-api-rest-en-node-js-a-traves-de-nginx
+
+ Tue, 10 Mar 2015 00:00:00 GMT
+
-
https://carlosazaustre.es/como-ser-autonomo-en-irlanda-registro-en-hacienda
@@ -206,11 +222,11 @@
Thu, 27 Jun 2013 00:00:00 GMT
-
-
- https://carlosazaustre.es/como-servir-tu-api-rest-en-node-js-a-traves-de-nginx
- https://carlosazaustre.es/como-servir-tu-api-rest-en-node-js-a-traves-de-nginx
+
+ https://carlosazaustre.es/conectando-firebase-a-react
+ https://carlosazaustre.es/conectando-firebase-a-react
- Tue, 10 Mar 2015 00:00:00 GMT
+ Tue, 04 Oct 2016 00:00:00 GMT
-
@@ -219,13 +235,6 @@
Sat, 10 Jan 2015 00:00:00 GMT
- -
-
- https://carlosazaustre.es/conectando-firebase-a-react
- https://carlosazaustre.es/conectando-firebase-a-react
-
- Tue, 04 Oct 2016 00:00:00 GMT
-
-
https://carlosazaustre.es/css-grid-layout-css
@@ -255,11 +264,11 @@
Mon, 04 Jul 2016 00:00:00 GMT
-
-
- https://carlosazaustre.es/desarrollo-full-stack-javascript-tambien-conocido-como-mean
- https://carlosazaustre.es/desarrollo-full-stack-javascript-tambien-conocido-como-mean
+
+ https://carlosazaustre.es/desplegando-nuestro-api-rest-en-la-nube-con-digital-ocean
+ https://carlosazaustre.es/desplegando-nuestro-api-rest-en-la-nube-con-digital-ocean
- Mon, 03 Feb 2014 00:00:00 GMT
+ Wed, 01 Jul 2015 00:00:00 GMT
-
@@ -269,25 +278,11 @@
Thu, 02 Jul 2015 00:00:00 GMT
-
-
- https://carlosazaustre.es/desplegando-nuestro-api-rest-en-la-nube-con-digital-ocean
- https://carlosazaustre.es/desplegando-nuestro-api-rest-en-la-nube-con-digital-ocean
-
- Wed, 01 Jul 2015 00:00:00 GMT
-
- -
-
- https://carlosazaustre.es/docker-como-entorno-de-desarrollo-local
- https://carlosazaustre.es/docker-como-entorno-de-desarrollo-local
+
+ https://carlosazaustre.es/desarrollo-full-stack-javascript-tambien-conocido-como-mean
+ https://carlosazaustre.es/desarrollo-full-stack-javascript-tambien-conocido-como-mean
- Sat, 01 Sep 2018 00:00:00 GMT
-
- -
-
- https://carlosazaustre.es/e-residency
- https://carlosazaustre.es/e-residency
-
- Wed, 12 Sep 2018 00:00:00 GMT
+ Mon, 03 Feb 2014 00:00:00 GMT
-
@@ -296,6 +291,13 @@
Wed, 24 Oct 2018 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/docker-como-entorno-de-desarrollo-local
+ https://carlosazaustre.es/docker-como-entorno-de-desarrollo-local
+
+ Sat, 01 Sep 2018 00:00:00 GMT
+
-
https://carlosazaustre.es/ejemplo-de-aplicacion-con-react-js-en-ecmascript-6
@@ -304,11 +306,11 @@
Tue, 23 Jun 2015 00:00:00 GMT
-
-
- https://carlosazaustre.es/el-camino-para-ser-un-pro-en-javascript
- https://carlosazaustre.es/el-camino-para-ser-un-pro-en-javascript
-
- Tue, 17 Feb 2015 00:00:00 GMT
+
+ https://carlosazaustre.es/empezando-con-angular-js
+ https://carlosazaustre.es/empezando-con-angular-js
+
+ Mon, 09 Sep 2013 00:00:00 GMT
-
@@ -318,18 +320,18 @@
Thu, 12 Mar 2015 00:00:00 GMT
-
-
- https://carlosazaustre.es/empezando-con-react-js-y-ecmascript-6
- https://carlosazaustre.es/empezando-con-react-js-y-ecmascript-6
-
- Mon, 22 Jun 2015 00:00:00 GMT
+
+ https://carlosazaustre.es/e-residency
+ https://carlosazaustre.es/e-residency
+
+ Wed, 12 Sep 2018 00:00:00 GMT
-
-
- https://carlosazaustre.es/empezando-con-angular-js
- https://carlosazaustre.es/empezando-con-angular-js
-
- Mon, 09 Sep 2013 00:00:00 GMT
+
+ https://carlosazaustre.es/el-camino-para-ser-un-pro-en-javascript
+ https://carlosazaustre.es/el-camino-para-ser-un-pro-en-javascript
+
+ Tue, 17 Feb 2015 00:00:00 GMT
-
@@ -338,6 +340,13 @@
Mon, 24 Sep 2018 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/empezando-con-react-js-y-ecmascript-6
+ https://carlosazaustre.es/empezando-con-react-js-y-ecmascript-6
+
+ Mon, 22 Jun 2015 00:00:00 GMT
+
-
https://carlosazaustre.es/es-tu-web-realmente-mobile-first
@@ -387,13 +396,6 @@
Thu, 13 Feb 2020 00:00:00 GMT
- -
-
- https://carlosazaustre.es/google-cloud-run
- https://carlosazaustre.es/google-cloud-run
-
- Mon, 08 Jul 2019 00:00:00 GMT
-
-
https://carlosazaustre.es/google-launchpad-madrid-dia-1-producto
@@ -402,11 +404,11 @@
Mon, 06 Jul 2015 00:00:00 GMT
-
-
- https://carlosazaustre.es/herramientas-utiles-para-desarrolladores
- https://carlosazaustre.es/herramientas-utiles-para-desarrolladores
+
+ https://carlosazaustre.es/google-cloud-run
+ https://carlosazaustre.es/google-cloud-run
- Thu, 13 Jun 2013 00:00:00 GMT
+ Mon, 08 Jul 2019 00:00:00 GMT
-
@@ -416,18 +418,18 @@
Thu, 09 Jul 2015 00:00:00 GMT
-
-
- https://carlosazaustre.es/impuestos-estonia
- https://carlosazaustre.es/impuestos-estonia
-
- Tue, 18 Sep 2018 00:00:00 GMT
+
+ https://carlosazaustre.es/herramientas-utiles-para-desarrolladores
+ https://carlosazaustre.es/herramientas-utiles-para-desarrolladores
+
+ Thu, 13 Jun 2013 00:00:00 GMT
-
-
- https://carlosazaustre.es/imagenes-responsive
- https://carlosazaustre.es/imagenes-responsive
+
+ https://carlosazaustre.es/launchpad-week-madrid-dia-2-ux
+ https://carlosazaustre.es/launchpad-week-madrid-dia-2-ux
- Wed, 21 Oct 2015 00:00:00 GMT
+ Tue, 07 Jul 2015 00:00:00 GMT
-
@@ -451,11 +453,18 @@
Tue, 25 Feb 2020 00:00:00 GMT
-
-
- https://carlosazaustre.es/launchpad-week-madrid-dia-2-ux
- https://carlosazaustre.es/launchpad-week-madrid-dia-2-ux
+
+ https://carlosazaustre.es/imagenes-responsive
+ https://carlosazaustre.es/imagenes-responsive
- Tue, 07 Jul 2015 00:00:00 GMT
+ Wed, 21 Oct 2015 00:00:00 GMT
+
+ -
+
+ https://carlosazaustre.es/impuestos-estonia
+ https://carlosazaustre.es/impuestos-estonia
+
+ Tue, 18 Sep 2018 00:00:00 GMT
-
@@ -493,18 +502,12 @@
Mon, 04 May 2015 00:00:00 GMT
-
-
- https://carlosazaustre.es/mi-experiencia-como-mentor-en-google-launchpad-week
- https://carlosazaustre.es/mi-experiencia-como-mentor-en-google-launchpad-week
-
- Wed, 26 Oct 2016 00:00:00 GMT
-
- -
-
- https://carlosazaustre.es/mi-experiencia-como-profesor-en-los-cursos-de-platzi
- https://carlosazaustre.es/mi-experiencia-como-profesor-en-los-cursos-de-platzi
-
- Sun, 15 Feb 2015 00:00:00 GMT
+
+ https://carlosazaustre.es/mochila
+ https://carlosazaustre.es/mochila
+
+
+ Sun, 09 Aug 2020 00:00:00 GMT
-
@@ -513,14 +516,6 @@
Tue, 13 Sep 2016 00:00:00 GMT
- -
-
- https://carlosazaustre.es/mochila
- https://carlosazaustre.es/mochila
-
-
- Sun, 09 Aug 2020 00:00:00 GMT
-
-
https://carlosazaustre.es/primera-aplicacion-web-en-raspberrypi-con-nodejs-cylonjs-controlando-leds-desde-el-movil
@@ -542,6 +537,13 @@
Fri, 05 Oct 2018 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/mi-experiencia-como-mentor-en-google-launchpad-week
+ https://carlosazaustre.es/mi-experiencia-como-mentor-en-google-launchpad-week
+
+ Wed, 26 Oct 2016 00:00:00 GMT
+
-
https://carlosazaustre.es/primeros-pasos-en-vue
@@ -556,6 +558,13 @@
Tue, 15 Jul 2014 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/mi-experiencia-como-profesor-en-los-cursos-de-platzi
+ https://carlosazaustre.es/mi-experiencia-como-profesor-en-los-cursos-de-platzi
+
+ Sun, 15 Feb 2015 00:00:00 GMT
+
-
https://carlosazaustre.es/que-es-la-autenticacion-con-token
@@ -584,6 +593,14 @@
Tue, 05 May 2015 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/react-vite
+ https://carlosazaustre.es/react-vite
+
+
+ Thu, 22 Jul 2021 00:00:00 GMT
+
-
https://carlosazaustre.es/registro-y-autorizacion-de-usuarios-en-node-js-con-twitter-y-facebook
@@ -605,13 +622,6 @@
Fri, 06 Sep 2013 00:00:00 GMT
- -
-
- https://carlosazaustre.es/travis-despliegue-integracion-continua
- https://carlosazaustre.es/travis-despliegue-integracion-continua
-
- Sat, 29 Feb 2020 00:00:00 GMT
-
-
https://carlosazaustre.es/tutorial-aplicacion-web-con-angularjs-y-routing
@@ -619,6 +629,13 @@
Mon, 20 Jan 2014 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/travis-despliegue-integracion-continua
+ https://carlosazaustre.es/travis-despliegue-integracion-continua
+
+ Sat, 29 Feb 2020 00:00:00 GMT
+
-
https://carlosazaustre.es/tutorial-ejemplo-de-aplicacion-web-con-angular-js-y-api-rest-con-node
@@ -626,6 +643,13 @@
Mon, 13 Jan 2014 00:00:00 GMT
+ -
+
+ https://carlosazaustre.es/uso-de-promesas-en-angularjs
+ https://carlosazaustre.es/uso-de-promesas-en-angularjs
+
+ Mon, 27 Apr 2015 00:00:00 GMT
+
-
https://carlosazaustre.es/usando-firebase-storage-con-react-js
@@ -634,11 +658,11 @@
Thu, 13 Oct 2016 00:00:00 GMT
-
-
- https://carlosazaustre.es/uso-de-promesas-en-angularjs
- https://carlosazaustre.es/uso-de-promesas-en-angularjs
+
+ https://carlosazaustre.es/vue-single-file-components
+ https://carlosazaustre.es/vue-single-file-components
- Mon, 27 Apr 2015 00:00:00 GMT
+ Wed, 10 Oct 2018 00:00:00 GMT
-
@@ -647,13 +671,6 @@
Sat, 18 Aug 2018 00:00:00 GMT
- -
-
- https://carlosazaustre.es/vue-single-file-components
- https://carlosazaustre.es/vue-single-file-components
-
- Wed, 10 Oct 2018 00:00:00 GMT
-
-
https://carlosazaustre.es/webcomponents-nativos-como-pasar-propiedades
@@ -669,12 +686,12 @@
Thu, 24 Sep 2015 00:00:00 GMT
-
-
+
https://carlosazaustre.es/workspace
https://carlosazaustre.es/workspace
- Mon, 04 Jan 2021 00:00:00 GMT
+ Thu, 27 Jan 2022 00:00:00 GMT
\ No newline at end of file
diff --git a/scripts/generate-podcast-data.js b/scripts/generate-podcast-data.js
deleted file mode 100644
index 2d63668..0000000
--- a/scripts/generate-podcast-data.js
+++ /dev/null
@@ -1,33 +0,0 @@
-const fs = require("fs/promises");
-const path = require("path");
-const fetch = require("node-fetch");
-
-const SPOTIFY_TOKEN = process.env.SPOTIFY_TOKEN;
-const SPOTIFY_SHOW_ID = "68KWuFM22vAFvrZ1JTIYec";
-
-const DATA_FILE = path.join(__dirname, "..", "data", "latestPodcasts.json");
-
-const getLatestPodcast = async () => {
- try {
- const url = `https://api.spotify.com/v1/shows/${SPOTIFY_SHOW_ID}/episodes?offset=0&limit=20&market=ES`;
- const response = await fetch(url, {
- method: 'GET',
- headers: {
- Authorization: `Bearer ${SPOTIFY_TOKEN}`,
- },
- });
- const json = await response.json();
- console.log(json);
- return json.items;
- }
- catch (error) {
- console.error(error);
- }
-};
-
-(async () => {
- const episodes = await getLatestPodcast();
- const data = JSON.stringify(episodes, null, 2);
- await fs.writeFile(DATA_FILE, data);
- console.log("💾 Latest podcasts data stored");
-})();
diff --git a/scripts/generate-video-data.js b/scripts/generate-video-data.js
index 7a4deb8..f2d3f4c 100644
--- a/scripts/generate-video-data.js
+++ b/scripts/generate-video-data.js
@@ -14,7 +14,7 @@ const getLatestYoutubeVideos = async () => {
const response = await fetch(
`${YOUTUBE_API_URL}${queryEndpoint}&key=${YOUTUBE_API_KEY}`
- )
+ );
const data = await response.json();
return data.items;
diff --git a/styles/fonts.js b/styles/fonts.js
index fc3c7ab..44ad298 100644
--- a/styles/fonts.js
+++ b/styles/fonts.js
@@ -2,5 +2,8 @@ import "@fontsource/poppins/300.css";
import "@fontsource/poppins/400.css";
import "@fontsource/poppins/500.css";
import "@fontsource/poppins/700.css";
-import "@fontsource/roboto/400.css";
-import "@fontsource/roboto/500.css";
+import "@fontsource/ibm-plex-sans/300.css";
+import "@fontsource/ibm-plex-sans/400.css";
+import "@fontsource/ibm-plex-sans/500.css";
+import "@fontsource/ibm-plex-sans/700.css";
+import "@fontsource/ibm-plex-mono/300.css";
diff --git a/styles/prism-night-owl.css b/styles/prism-night-owl.css
index f97ff2e..0310502 100644
--- a/styles/prism-night-owl.css
+++ b/styles/prism-night-owl.css
@@ -6,17 +6,19 @@
* Added by Souvik Mandal [@SimpleIndian]
*/
+@import "@fontsource/ibm-plex-mono/300.css";
+
code[class*="language-"],
pre[class*="language-"] {
color: #d6deeb;
- font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
+ font-family: "IBM Plex Mono", Monaco, "Andale Mono", "Ubuntu Mono", monospace;
text-align: left;
white-space: pre;
word-spacing: normal;
word-break: normal;
word-wrap: normal;
line-height: 1.5;
- font-size: 1em;
+ font-size: 0.9em;
-moz-tab-size: 4;
-o-tab-size: 4;
@@ -33,7 +35,7 @@ pre[class*="language-"] ::-moz-selection,
code[class*="language-"]::-moz-selection,
code[class*="language-"] ::-moz-selection {
text-shadow: none;
- background: rgba(29, 59, 83, 0.99);
+ background: rgba(20, 31, 40, 0.99);
}
pre[class*="language-"]::selection,
@@ -41,7 +43,7 @@ pre[class*="language-"] ::selection,
code[class*="language-"]::selection,
code[class*="language-"] ::selection {
text-shadow: none;
- background: rgba(29, 59, 83, 0.99);
+ background: rgba(20, 31, 40, 0.99);
}
@media print {
@@ -56,12 +58,14 @@ pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
+ box-shadow: 0 0 0.5em rgba(52, 52, 52, 0.5);
}
:not(pre) > code[class*="language-"],
pre[class*="language-"] {
color: white;
- background: #011627;
+ background: #111416;
+ border-radius: .3em;
}
:not(pre) > code[class*="language-"] {
diff --git a/styles/theme.js b/styles/theme.js
index 9906c60..14cc6f2 100644
--- a/styles/theme.js
+++ b/styles/theme.js
@@ -20,7 +20,7 @@ const theme = extendTheme({
},
fonts: {
heading: "Poppins",
- body: "Roboto",
+ body: "IBM Plex Sans",
},
sizes: {
container: {