{
    "version": "https://jsonfeed.org/version/1",
    "title": "Gabriel Garcia",
    "home_page_url": "https://garciat.com/",
    "description": "The personal website of Gabriel Garcia, a software engineer based in Amsterdam.",
    "items": [
        {
            "content_html": "Exploring the implementation of Algebraic Data Types in Java.",
            "url": "https://garciat.com/posts/java-adt/",
            "title": "Java Pattern: Algebraic Data Types",
            "date_modified": "2020-05-07T00:00:00.000Z"
        },
        {
            "content_html": "This is rough brain dump of several principles/ideas that I applied in 2020 while working at Uber.",
            "url": "https://garciat.com/posts/programming-principles-2020/",
            "title": "My Programming Principles in 2020",
            "date_modified": "2020-12-20T00:00:00.000Z"
        },
        {
            "content_html": "A complete brain dump of my understanding of Go generics at the time.",
            "url": "https://garciat.com/posts/go-generics/",
            "title": "Understanding Go generics",
            "date_modified": "2024-05-17T00:00:00.000Z"
        },
        {
            "content_html": "Analyzing the cost of adding to integers in CPython.",
            "url": "https://garciat.com/posts/cpython-int-add/",
            "title": "Adding two integers in CPython",
            "date_modified": "2017-11-25T00:00:00.000Z"
        },
        {
            "content_html": "I tackled the problem of data validation in Java with declarative & functional programming inspired by Haskell.",
            "url": "https://garciat.com/posts/java-functional-validation/",
            "title": "Declarative and composable input validation with rich errors in Java",
            "date_modified": "2020-06-27T00:00:00.000Z"
        },
        {
            "content_html": "Looking back at 16 years of GitHub gists.",
            "url": "https://garciat.com/posts/gists-lookback/",
            "title": "16+ years of gists",
            "date_modified": "2026-01-25T00:00:00.000Z"
        },
        {
            "content_html": "I briefly explore union types and singleton types in Haskell and TypeScript.",
            "url": "https://garciat.com/posts/haskell-union-types/",
            "title": "TypeScript and Haskell: Unions & Singletons",
            "date_modified": "2024-12-14T00:00:00.000Z"
        },
        {
            "content_html": "I implement some kind of restricted effects system in Python via async/await.",
            "url": "https://garciat.com/posts/python-algebraic-effects-async-await/",
            "title": "Python: Algebraic Effects via async/await",
            "date_modified": "2020-06-27T00:00:00.000Z"
        },
        {
            "content_html": "I put together a self-contained example that calls compiled Haskell from Java using the new Foreign Function & Memory API from JEP 454.",
            "url": "https://garciat.com/posts/haskell-from-java/",
            "title": "Calling Haskell from Java",
            "date_modified": "2025-01-30T00:00:00.000Z"
        },
        {
            "content_html": "Looking back at 16 years of GitHub gists.",
            "url": "https://garciat.com/posts/deno-static/",
            "title": "My own functional SSG for Deno",
            "date_modified": "2026-09-06T00:00:00.000Z"
        },
        {
            "content_html": "I share my experience compiling Go to WASM for a side project.",
            "url": "https://garciat.com/posts/go-wasm/",
            "title": "Compiling Go to WASM",
            "date_modified": "2025-01-16T00:00:00.000Z"
        },
        {
            "content_html": "I describe a code meta-pattern that I have developed and applied in the last year.",
            "url": "https://garciat.com/posts/programming-with-units/",
            "title": "Programming with Units",
            "date_modified": "2021-03-05T00:00:00.000Z"
        },
        {
            "content_html": "Extending my type class resolution library to support an approximation of associated types, so that I can build something like GHC Generics for Java.",
            "url": "https://garciat.com/posts/java-associated-types/",
            "title": "GHC Generics in Java via associated types",
            "date_modified": "2025-12-27T00:00:00.000Z"
        },
        {
            "content_html": "I explore the implementation details of Go interfaces.",
            "url": "https://garciat.com/posts/go-interfaces/",
            "title": "Understanding Go interfaces",
            "date_modified": "2024-05-08T00:00:00.000Z"
        },
        {
            "content_html": "I wrote a tiny DI/IOC library for Python 3.6+ that leverages Type Hints",
            "url": "https://garciat.com/posts/gean/",
            "title": "New Python library: gean",
            "date_modified": "2020-05-31T00:00:00.000Z"
        },
        {
            "content_html": "Typeclasses, Higher-Kinded Types, and Overlapping Instances in Pure Java: A post about re-implementing a mini Haskell in Java, using reflection, generic metadata, and type unification.",
            "url": "https://garciat.com/posts/java-type-classes/",
            "title": "Full Haskell-like Type Class resolution in Java",
            "date_modified": "2025-12-06T00:00:00.000Z"
        }
    ]
}