{
  "michel.codes": {
    "/blogs/": {
      "date": "2026-02-07T19:21:38Z",
      "httpProtocol": "h2, tls/1.3",
      "httpStatus": 200,
      "ipAddress": "18.208.88.157",
      "ipASN": "Amazon.com, Inc.",
      "ipCountry": "United States",
      "httpHeaderHash": "VKSBJECRAAWKRXJQSBJL3LDNF64PTCT5",
      "httpHeaderTechnologies": [
        "HSTS",
        "Netlify"
      ],
      "httpHeaderUrls": [],
      "httpHeaderByteSize": 402,
      "httpBodyHash": "JT3D476AMNJEA7R4IWNNO3BJ65KFEGXJ",
      "httpBodyTechnologies": [
        "React",
        "Webpack",
        "Gatsby:2.0.81"
      ],
      "httpBodyUrls": [
        "/blogs/ui-as-an-afterthought",
        "https://www.mendix.com/blog/easy-xpath-retrieval-in-java/",
        "/static/d/173/path---index-6a9-NZuapzHg3X9TaN1iIixfv1W23E.json",
        "/static/d/740/path---talks-c-86-eee-NZuapzHg3X9TaN1iIixfv1W23E.json",
        "https://www.mendix.com/blog/rest-part-ii-publishing-microflows-rest/",
        "https://medium.com/@mweststrate/mobx-4-better-simpler-faster-smaller-c1fbc08008da",
        "https://hackernoon.com/becoming-fully-reactive-an-in-depth-explanation-of-mobservable-55995262a254",
        "/workshops",
        "/blogs/mobx-decorators",
        "https://medium.com/@mweststrate",
        "/component---src-pages-blogs-js-3dfc536c048af5420deb.js",
        "/component---src-pages-workshops-js.25f3ab5de8651de75d76.css",
        "https://medium.com/@mweststrate/mobx-5-the-saga-continues-4852bce05572",
        "https://hackernoon.com/introducing-immer-immutability-the-easy-way-9d73d8f71cb3",
        "https://blog.cloudboost.io/3-reasons-why-i-stopped-using-react-setstate-ab73fc67a42e",
        "/",
        "mailto:info@michel.codes",
        "http://survivejs.com/blog/mobservable-interview/",
        "/component---src-pages-blogs-js.8a928616b0c36958d0c4.css",
        "/component---src-pages-talks-js.fb51634802a41dcb36c4.css",
        "https://medium.com/@mweststrate/object-observe-is-dead-long-live-mobservable-observe-ad96930140c5",
        "https://medium.com/@mweststrate/mobx-2-2-explicit-actions-controlled-mutations-and-improved-dx-45cdc73c7c8d",
        "https://medium.com/visual-development/how-to-fix-nasty-circular-dependency-issues-once-and-for-all-in-javascript-typescript-a04c987cf0de",
        "/blogs",
        "/0-f2237184bc4da1550d70.js",
        "https://medium.com/@mweststrate/mobx-3-released-unpeeling-the-onion-ca877382f443",
        "https://www.mendix.com/blog/the-sprintr-like-button-tales-of-a-16-fold-performance-gain/",
        "https://www.mendix.com/blog/making-react-reactive-pursuit-high-performing-easily-maintainable-react-apps/",
        "https://medium.com/@mweststrate/distributing-state-changes-using-snapshots-patches-and-actions-part-2-2f50d8363988",
        "https://medium.com/@mweststrate/pure-rendering-in-the-light-of-time-and-state-4b537d8d40b1?source=user_profile---------24------------------",
        "/manifest.webmanifest",
        "/app-a7a781e9328a54c54a87.js",
        "/webpack-runtime-4dd5acd947485e6e17a5.js",
        "https://www.mendix.com/blog/consuming-first-rest-service/",
        "https://codeburst.io/the-curious-case-of-mobx-state-tree-7b4e22d461f",
        "/component---src-pages-talks-js-4ff99dfa94491ceb7da3.js",
        "/static/d/346/path---workshops-65-e-aa4-NZuapzHg3X9TaN1iIixfv1W23E.json",
        "https://hackernoon.com/the-fundamental-principles-behind-mobx-7a725f71f3e8",
        "https://medium.com/@mweststrate/how-to-create-strongly-typed-npm-modules-1e1bda23a7f4",
        "https://hackernoon.com/how-to-decouple-state-and-ui-a-k-a-you-dont-need-componentwillmount-cc90b787aa37",
        "https://medium.com/@mweststrate/introducing-serializr-serializing-and-deserializing-object-graphs-with-ease-8833c3fcea02",
        "/talks",
        "/static/face-e1415c7ae7a57a935e50b6ee0c9fb852.jpg",
        "/component---src-pages-index-js.2d5ca944d94b376600fe.css",
        "https://medium.com/@mweststrate/distributing-state-changes-using-snapshots-patches-and-actions-part-1-2811a2fcd65f",
        "https://www.gatsbyjs.org",
        "/component---src-pages-index-js-4a1ae306af5939698fde.js",
        "/component---src-pages-workshops-js-6892c97707d6c5ed0b9b.js",
        "/static/d/859/path---blogs-75-d-e40-NZuapzHg3X9TaN1iIixfv1W23E.json",
        "https://medium.com/@mweststrate/how-to-safely-use-react-context-b7e343eff076",
        "https://medium.com/@mweststrate/mobx-utils-community-driven-utility-belt-for-mobx-264346cb2744",
        "/blogs/mobx6"
      ],
      "httpBodyMetaTags": {
        "description": "Homepage of Michel Weststrate",
        "og:description": "Homepage of Michel Weststrate",
        "twitter:description": "Homepage of Michel Weststrate"
      },
      "httpBodyByteSize": 28809,
      "httpBodyPageTitle": "Blogs | michel.codes"
    }
  }
}