{
  "api": "christianecg.com",
  "version": 1,
  "endpoint": "/api/articles.json",
  "docs": "https://christianecg.com/es/api",
  "generated_at": "2026-07-10T02:20:19.720Z",
  "count": 49,
  "data": [
    {
      "title": "Serving every article as an RFC-style plain text document",
      "date": "2026-07-09",
      "excerpt": "Every article now has a /doc/:slug.txt version rendered as a classic IETF RFC: 72-column body, chronological OCTA-n numbering, numbered sections, links collected into a References section — generated at build time from the Markdown source with marked's lexer.",
      "tags": [
        "notes",
        "astro",
        "plain-text",
        "rfc",
        "content-formats"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/serving-articles-as-rfcs",
      "external": false,
      "canonical": "https://octa.page/doc/serving-articles-as-rfcs/"
    },
    {
      "title": "Leap Seconds After 2035: What Was Actually Decided, and the Proposals on the Table",
      "date": "2026-07-08",
      "excerpt": "The 2022 CGPM resolution doesn't abolish leap seconds — it raises the tolerated UT1−UTC difference, with the practical effect that insertions cease. A survey of replacement proposals (leap minute, Levine's rate adjustments, BIPM's Continuous UTC group) plus a 4-year scheduled-block variant.",
      "tags": [
        "timezone",
        "utc",
        "ut1",
        "leap-seconds",
        "ntp",
        "iers",
        "timekeeping"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/retiring-leap-seconds",
      "external": false,
      "canonical": "https://octa.page/doc/retiring-leap-seconds/"
    },
    {
      "title": "Timezone Propagation: How IANA Changes Reach Your Application",
      "date": "2026-06-12",
      "excerpt": "How IANA timezone changes travel from the tzdb release through CLDR, OS updates, and language runtimes — including Node.js's Date/Intl split where the same environment can produce two different answers, and the British Columbia permanent DST workaround.",
      "tags": [
        "timezone",
        "iana",
        "tz",
        "cldr",
        "internationalization"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/timezone-propagation-flow",
      "external": false,
      "canonical": "https://octa.page/doc/timezone-propagation-flow/"
    },
    {
      "title": "Completing the IPoAC Stack: Why DoAC Had to Exist",
      "date": "2026-06-11",
      "excerpt": "The IPoAC protocol family had no naming layer for 35 years. DoAC fills the gap with the AA resource record, the Pigeon of Last Resort bootstrap procedure, retransmission semantics calibrated for multi-day transit, and DNSSEC key distribution via Trusted Courier Pigeon.",
      "tags": [
        "systems",
        "ietf",
        "dns",
        "ipoac",
        "protocol-design",
        "rfcs"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/completing-the-ipoac-stack",
      "external": false,
      "canonical": "https://octa.page/doc/completing-the-ipoac-stack/"
    },
    {
      "title": "My First Internet Draft: DNS over Avian Carriers",
      "date": "2026-06-09",
      "excerpt": "Notes on submitting draft-cruzgonzalez-ipoac-dns-00 to the IETF: what DoAC specifies, the AA resource record wire format, the Pigeon of Last Resort bootstrap problem, DNSSEC over Trusted Courier Pigeon, and the path to publication as an April Fools RFC.",
      "tags": [
        "notes",
        "ietf",
        "dns",
        "ipoac",
        "rfcs"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/my-first-internet-draft",
      "external": false,
      "canonical": "https://octa.page/doc/my-first-internet-draft/"
    },
    {
      "title": "Injecting git config per-process with GIT_CONFIG_KEY_n",
      "date": "2026-06-07",
      "excerpt": "Injecting git safe.directory per-process via GIT_CONFIG_COUNT and GIT_CONFIG_KEY_n environment variables — no file writes, no sudo — the correct fix for deploy agents running as root against repositories owned by www-data.",
      "tags": [
        "runtime",
        "git",
        "deploy",
        "linux",
        "systemd"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/git-config-env-injection",
      "external": false,
      "canonical": "https://octa.page/doc/git-config-env-injection/"
    },
    {
      "title": "floo: a minimal deploy agent for self-hosted VPS",
      "date": "2026-06-06",
      "excerpt": "floo runs an HTTP deploy agent on the server with YAML-defined project steps, scoped tokens stored as SHA-256 hashes, and real-time log streaming via SSE. systemd as the process supervisor, no Docker, no managed platforms.",
      "tags": [
        "notes",
        "deploy",
        "nodejs",
        "cli",
        "self-hosted",
        "systemd"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/floo-deploy-agent",
      "external": false,
      "canonical": "https://octa.page/doc/floo-deploy-agent/"
    },
    {
      "title": "Bifrost: what changed when a private tunnel became a public package",
      "date": "2026-06-03",
      "excerpt": "Design changes required to turn a single-user WebSocket tunnel into a self-hostable package: named peers with subdomain routing, scoped tokens stored as SHA-256 hashes, backpressure limits, dead connection detection, and queue drain on disconnect.",
      "tags": [
        "architecture",
        "websocket",
        "networking",
        "bifrost",
        "open-source"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/bifrost-multi-peer-tunnel-relay",
      "external": false,
      "canonical": "https://octa.page/doc/bifrost-multi-peer-tunnel-relay/"
    },
    {
      "title": "Building @avelor/vhost: From Repeated Pain to Open Source Tool",
      "date": "2026-06-02",
      "excerpt": "@avelor/vhost generates Apache VirtualHost configs from a YAML file — with a managed-config marker for gradual migration, a default-vhost that blocks unrecognized requests, and content-negotiated error pages that serve HTML or JSON based on the Accept header.",
      "tags": [
        "systems",
        "apache",
        "vhost",
        "cli",
        "developer-tools",
        "open-source"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/building-avelor-vhost",
      "external": false,
      "canonical": "https://octa.page/doc/building-avelor-vhost/"
    },
    {
      "title": "Why I Built mesh: Local Dev Proxy with Named Services and Failure Injection",
      "date": "2026-06-01",
      "excerpt": "mesh is a local dev proxy where services get names instead of port numbers, and a YAML rules block injects failures at the network layer — 503s, delays, per-request rates — without touching backend code or adding mocks.",
      "tags": [
        "notes",
        "proxy",
        "developer-tools",
        "local-development",
        "fault-injection",
        "nodejs",
        "cli"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/why-i-built-mesh",
      "external": false,
      "canonical": "https://octa.page/doc/why-i-built-mesh/"
    },
    {
      "title": "CV as Code: Generating a PDF from an Astro page with Playwright",
      "date": "2026-05-31",
      "excerpt": "Generating a print-ready PDF CV from a static Astro page using Playwright headlessly — why @page margins are ignored by Playwright, why astro-pdf was skipped, and ATS compatibility pitfalls with em dashes and special characters.",
      "tags": [
        "notes",
        "astro",
        "playwright",
        "pdf",
        "tooling"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/cv-as-code-playwright-pdf",
      "external": false,
      "canonical": "https://octa.page/doc/cv-as-code-playwright-pdf/"
    },
    {
      "title": "Feature flag services don't store user IDs — and the consequence of that",
      "date": "2026-05-26",
      "excerpt": "Tessera stores no user records — rollout consistency comes from deterministic hashing, not a user registry. The consequence: exposure analytics require a separate events table. How LaunchDarkly, Statsig, and PostHog Flags handle the same tradeoff.",
      "tags": [
        "architecture",
        "feature-flags",
        "privacy"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/feature-flags-stateless-users",
      "external": false,
      "canonical": "https://octa.page/doc/feature-flags-stateless-users/"
    },
    {
      "title": "Separating the flag evaluation API from the dashboard in the same monorepo",
      "date": "2026-05-25",
      "excerpt": "Why Tessera's feature flag evaluation API runs on Hono rather than Next.js API routes — cold start latency, deployment coupling, and framework overhead — and how a shared monorepo makes the split cheap while keeping evaluation logic in one place.",
      "tags": [
        "architecture",
        "feature-flags",
        "hono",
        "next-js",
        "performance",
        "monorepo"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/feature-flags-hono-next-split",
      "external": false,
      "canonical": "https://octa.page/doc/feature-flags-hono-next-split/"
    },
    {
      "title": "CSS print layout: floats, BFC, and image containment",
      "date": "2026-05-25",
      "excerpt": "Four print layout behaviors that break screen assumptions: why floats beat CSS Grid for variable-height sidebars, why DOM order matters for floats, why overflow:hidden on a float sibling breaks multi-page layouts, and how to draw rules that actually print.",
      "tags": [
        "runtime",
        "css",
        "print",
        "layout",
        "browser"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/css-print-float-bfc",
      "external": false,
      "canonical": "https://octa.page/doc/css-print-float-bfc/"
    },
    {
      "title": "JSON-LD Entity Graph for Brand Disambiguation on Minimal Sites",
      "date": "2026-05-24",
      "excerpt": "How to use JSON-LD with @id, sameAs, and rel=me to establish a coherent entity graph that disambiguates a brand sharing its name with unrelated entities — the three-node minimum, Wikidata's role, and what structured data cannot do.",
      "tags": [
        "architecture",
        "seo",
        "structured-data",
        "json-ld",
        "knowledge-graph",
        "schema-org"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/jsonld-entity-graph-brand-disambiguation",
      "external": false,
      "canonical": "https://octa.page/doc/jsonld-entity-graph-brand-disambiguation/"
    },
    {
      "title": "RSS as a cross-site content bridge in Astro SSG",
      "date": "2026-05-24",
      "excerpt": "Using RSS as a stateless content contract between two independent Astro static sites, with GitHub Actions repository_dispatch to trigger rebuilds only when Markdown content changes — not on every commit.",
      "tags": [
        "architecture",
        "rss",
        "astro",
        "static-site",
        "github-actions",
        "ci-cd"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/rss-as-cross-site-content-bridge",
      "external": false,
      "canonical": "https://octa.page/doc/rss-as-cross-site-content-bridge/"
    },
    {
      "title": "av.js — self-hosted analytics embed",
      "date": "2026-05-23",
      "excerpt": "API reference for av.js: the minimal analytics snippet for Avelor-hosted projects. Covers the embed pattern, the pageview payload structure, custom event API, session ID strategy, and implementation constraints like keepalive fetches and localhost filtering.",
      "tags": [
        "notes",
        "analytics",
        "javascript",
        "self-hosted"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/av-js-analytics-embed",
      "external": false,
      "canonical": "https://octa.page/doc/av-js-analytics-embed/"
    },
    {
      "title": "Using the URL fragment as an encryption key carrier",
      "date": "2026-05-22",
      "excerpt": "Client-side AES-256-GCM encryption where the key lives exclusively in the URL fragment — never transmitted to the server. The design, the constraints around browser history and intermediaries, and why out-of-band key delivery defeats the UX goal.",
      "tags": [
        "architecture",
        "cryptography",
        "web-crypto",
        "security"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/url-fragment-as-encryption-key",
      "external": false,
      "canonical": "https://octa.page/doc/url-fragment-as-encryption-key/"
    },
    {
      "title": "A WebSocket relay as a self-hosted tunnel",
      "date": "2026-05-22",
      "excerpt": "A single Node.js process that exposes localhost over public HTTPS using a persistent outbound WebSocket from the CLI — token auth in the handshake, request queuing with UUID correlation, 30s timeout, and no inbound ports on the developer's machine.",
      "tags": [
        "architecture",
        "websocket",
        "networking",
        "reverse-proxy"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/websocket-tunnel-relay",
      "external": false,
      "canonical": "https://octa.page/doc/websocket-tunnel-relay/"
    },
    {
      "title": "tailscale serve sets REMOTE_ADDR to 127.0.0.1 for every request",
      "date": "2026-05-21",
      "excerpt": "tailscale serve is a reverse proxy, not a network filter — it collapses all caller identities to 127.0.0.1, silently bypassing any REMOTE_ADDR-based auth guard. The only reliable identity signal is the Tailscale-User-Login header it injects.",
      "tags": [
        "runtime",
        "tailscale",
        "php",
        "security",
        "networking"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/tailscale-serve-remote-addr",
      "external": false,
      "canonical": "https://octa.page/doc/tailscale-serve-remote-addr/"
    },
    {
      "title": "Building gob.co.nz: A Static Corrections Register",
      "date": "2026-05-20",
      "excerpt": "Architecture notes for gob.co.nz, a static public corrections register for the tech industry — stack decisions, Astro 6 Content Layer footguns, build-time OG image generation with sharp, and Pagefind client-side search integration.",
      "tags": [
        "architecture",
        "astro",
        "static-site",
        "content-architecture",
        "tailwind",
        "pagefind"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/building-gob-co-nz",
      "external": false,
      "canonical": "https://octa.page/doc/building-gob-co-nz/"
    },
    {
      "title": "Building Octa: Architecture Decisions for a Static Engineering Notebook",
      "date": "2026-05-20",
      "excerpt": "Design decisions behind Octa: why Astro over Next.js, how the type/project dual-classification model works, the sidebar architecture, Mermaid diagram rendering without a build-time headless browser, and what was deliberately left out.",
      "tags": [
        "architecture",
        "astro",
        "static-site",
        "design-systems"
      ],
      "source": "Octa",
      "url": "https://christianecg.com/es/blog/building-octa",
      "external": false,
      "canonical": "https://octa.page/doc/building-octa/"
    },
    {
      "title": "El desarrollo de software es una de las profesiones más peligrosas del mundo",
      "date": "2022-11-06",
      "excerpt": "Sin duda alguna, el desarrollo de software es una profesión muy peligrosa. Muchas veces no nos detenemos a pensar en los riesgos que corremos al estar trabajando con código, pero estamos expuestos a muchos peligros.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/el-desarrollo-de-software-profesion-peligrosa",
      "external": false
    },
    {
      "title": "En ocasiones vale la pena reinventar la rueda",
      "date": "2022-08-08",
      "excerpt": "Como desarrolladores de software, constantemente buscamos retos y oportunidades. Muchas veces al aprender algo nuevo nos recuerdan que no vale la pena reinventar la rueda. Pero, ¿siempre es así?",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/reinventar-la-rueda",
      "external": false
    },
    {
      "title": "Por qué reconstruí mi blog",
      "date": "2022-06-04",
      "excerpt": "Reflexión sobre el proceso de reconstruir Octa desde cero: qué no funcionaba, qué aprendí en el camino y por qué a veces tirar todo y empezar es la decisión correcta.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/por-que-reconstrui-mi-blog",
      "external": false
    },
    {
      "title": "Por este motivo un NFT es tan valioso en la Web 3",
      "date": "2022-01-27",
      "excerpt": "Exploración del valor detrás de los NFTs en el ecosistema de la Web 3: qué los hace únicos, por qué generan tanto debate y qué implican para el futuro de la propiedad digital.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/nft-web3",
      "external": false
    },
    {
      "title": "Cómo iniciar como programador en la Web 3",
      "date": "2022-01-14",
      "excerpt": "Guía práctica para desarrolladores que quieren dar sus primeros pasos en el ecosistema descentralizado: qué aprender, por dónde empezar y qué herramientas usar.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/iniciar-como-programador-web3",
      "external": false
    },
    {
      "title": "Qué es la Web 3 y por qué todos están hablando sobre eso",
      "date": "2022-01-06",
      "excerpt": "Un análisis de qué es la Web 3, sus fundamentos tecnológicos y por qué el mundo tech no puede dejar de hablar de ello.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/que-es-la-web3",
      "external": false
    },
    {
      "title": "Estas son las novedades que podríamos esperar en CSS el próximo año",
      "date": "2021-11-25",
      "excerpt": "Dos nuevas reglas condicionales propuestas al CSSWG podrían cambiar cómo escribimos CSS: @when y @else prometen simplificar las combinaciones de media queries y feature detection.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/novedades-css-2022",
      "external": false
    },
    {
      "title": "En estas tecnologías se desarrollará el Metaverso de Facebook",
      "date": "2021-11-10",
      "excerpt": "Facebook se convierte en Meta y apuesta todo al Metaverso. Cuáles son los lenguajes y herramientas que ya están apareciendo en las ofertas de trabajo para construir el futuro de internet.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/tecnologias-metaverso-facebook",
      "external": false
    },
    {
      "title": "Deberías aprender a desarrollar aplicaciones móviles",
      "date": "2021-11-06",
      "excerpt": "El 15% de la industria tech son desarrolladores móviles, los salarios son altos y el impacto en el usuario es inmediato. Tres razones para dar el salto al desarrollo móvil.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/aprender-desarrollo-movil",
      "external": false
    },
    {
      "title": "Por qué Linux se está volviendo tan popular",
      "date": "2021-11-06",
      "excerpt": "Desarrolladores y usuarios comunes están migrando a Linux. Un análisis de por qué un sistema operativo open source, personalizable y gratuito está ganando terreno.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/por-que-linux-popular",
      "external": false
    },
    {
      "title": "Necesitas aprender a hacer pruebas unitarias, y te explico por qué",
      "date": "2021-11-02",
      "excerpt": "Las pruebas unitarias no son un lujo: son una obligación si quieres desarrollar más rápido, con más confianza y sin vivir apagando incendios antes de cada deadline.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/pruebas-unitarias",
      "external": false
    },
    {
      "title": "Qué es Docker y por qué es tan popular",
      "date": "2021-10-27",
      "excerpt": "Docker elimina los problemas de configuración y dependencias al empaquetar todo lo que una aplicación necesita. Un recorrido por sus ventajas principales.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/que-es-docker",
      "external": false
    },
    {
      "title": "Tú necesitas una página web",
      "date": "2021-10-08",
      "excerpt": "En la era digital, tu presencia en internet dice más sobre ti que un currículum. Por qué necesitas un sitio web propio, y qué pasa cuando no tienes uno.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/necesitas-pagina-web",
      "external": false
    },
    {
      "title": "Por qué aprender Node JS: tres buenas razones para empezar",
      "date": "2021-09-24",
      "excerpt": "JavaScript en el servidor, una curva de aprendizaje accesible y una alta demanda laboral: las tres razones más sólidas para apostar por Node.js en 2021.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/por-que-aprender-nodejs",
      "external": false
    },
    {
      "title": "La nave lanzada por Space X usa JavaScript",
      "date": "2021-09-15",
      "excerpt": "La misión Inspiration4 de SpaceX, la primera tripulada solo por civiles, usa HTML, CSS y JavaScript en la interfaz de la Crew Dragon. Qué significa eso para nosotros como desarrolladores.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/spacex-usa-javascript",
      "external": false
    },
    {
      "title": "Qué es Git y por qué deberías aprenderlo",
      "date": "2021-09-08",
      "excerpt": "Git no es solo para devs: es la herramienta más importante para colaborar en proyectos digitales. Qué es, cómo funciona, y tres razones concretas para aprenderlo.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/que-es-git",
      "external": false
    },
    {
      "title": "¡Los geeks dominaremos el mundo!",
      "date": "2021-08-31",
      "excerpt": "La cultura geek ya no es solo una subcultura: es la cultura dominante de nuestra era. Los que trabajan con tecnología están redefiniendo cómo funciona el mundo.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/los-geeks-dominaremos-el-mundo",
      "external": false
    },
    {
      "title": "Por qué PHP no está muerto",
      "date": "2021-08-23",
      "excerpt": "Cada lenguaje tiene su funcionalidad, sus ventajas y sus desventajas. Un análisis de por qué PHP sigue siendo relevante y por qué las críticas no cuentan toda la historia.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/por-que-php-no-esta-muerto",
      "external": false
    },
    {
      "title": "5 cosas que te harán un mejor desarrollador",
      "date": "2021-04-09",
      "excerpt": "Cinco hábitos concretos que marcan la diferencia entre un desarrollador que avanza y uno que se estanca: aprendizaje continuo, experiencia consciente y lectura de código ajeno.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/5-cosas-mejor-desarrollador",
      "external": false
    },
    {
      "title": "Funciones que veremos en Javascript este 2021",
      "date": "2021-03-26",
      "excerpt": "Cinco funcionalidades de JavaScript que alcanzaron Stage 4 y llegaron al estándar ES2021: separadores numéricos, asignación lógica, WeakRef, Promise.any() y replaceAll.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/funciones-javascript-es2021",
      "external": false
    },
    {
      "title": "Por qué tu sitio web debería funcionar sin Javascript",
      "date": "2021-03-19",
      "excerpt": "El 1% de las visitas donde JS falla no es solo un número: es una oportunidad para construir sitios más rápidos, accesibles y confiables. Una mirada al efecto de las rampas en la acera.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/sitio-web-sin-javascript",
      "external": false
    },
    {
      "title": "Querido programador junior",
      "date": "2020-09-26",
      "excerpt": "Una carta para todos los que están comenzando en el mundo del desarrollo: tienes el superpoder de crear lo que quieras, y no estás solo en este camino.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/querido-programador-junior",
      "external": false
    },
    {
      "title": "Guía básica para la destrucción de la humanidad",
      "date": "2020-09-05",
      "excerpt": "El título suena absurdo, pero el argumento es serio: la humanidad moderna podría colapsar con un solo error humano. No con bombas nucleares. Con apagar el internet.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/guia-basica-destruccion-humanidad",
      "external": false
    },
    {
      "title": "Primeros días de un DSC Lead en Google",
      "date": "2020-08-23",
      "excerpt": "Fui aceptado como DSC Lead en Google Developer Student Clubs. Esto es lo que significó para mí: la notificación, el reto, y lo que aprendí en los primeros días.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/primeros-dias-dsc-lead",
      "external": false
    },
    {
      "title": "Programar te cambia la vida",
      "date": "2020-08-16",
      "excerpt": "La programación es el arte de convertir una taza de café en magia. Una reflexión sobre por qué aprender a programar es una de las mejores decisiones que puedes tomar.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/programar-te-cambia-la-vida",
      "external": false
    },
    {
      "title": "7 cosas que no te enseñarán en clases de programación",
      "date": "2020-07-11",
      "excerpt": "Las cosas que aprendí por cuenta propia y que me hubiera gustado que me enseñaran desde mis primeras clases de programación.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/7-cosas-no-ensenaran-clases-programacion",
      "external": false
    },
    {
      "title": "5 cosas que me hubiera gustado saber cuando empecé a programar",
      "date": "2020-07-04",
      "excerpt": "Las lecciones más importantes que nadie te cuenta cuando empiezas a programar: desde leer código ajeno hasta la importancia de colaborar desde el primer día.",
      "tags": [],
      "source": "Blog",
      "url": "https://christianecg.com/es/blog/5-cosas-hubiera-gustado-saber",
      "external": false
    }
  ]
}