3:I[9275,[],""] 4:I[1343,[],""] 5:I[2650,["173","static/chunks/173-424fa9be91923976.js","231","static/chunks/231-1e7bbdc770c66fc3.js","521","static/chunks/521-7266f541e89dccd7.js","185","static/chunks/app/layout-1a67d20efb7fbcee.js"],"Providers"] 6:I[7848,["173","static/chunks/173-424fa9be91923976.js","231","static/chunks/231-1e7bbdc770c66fc3.js","521","static/chunks/521-7266f541e89dccd7.js","185","static/chunks/app/layout-1a67d20efb7fbcee.js"],"Header"] 7:I[231,["173","static/chunks/173-424fa9be91923976.js","49","static/chunks/49-d41f7eeba1de0524.js","231","static/chunks/231-1e7bbdc770c66fc3.js","847","static/chunks/847-d03f1a8cba4db626.js","404","static/chunks/app/blog/page-527c30508ff17cd7.js"],""] 0:["zCwPuQV_WbLEohhlcHJz-",[[["",{"children":["blog",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["blog",{"children":["__PAGE__",{},[["$L1","$L2"],null],null]},["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children","blog","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","styles":null}],null]},[["$","html",null,{"lang":"en","className":"h-full antialiased","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex h-full bg-zinc-200 dark:bg-black","children":["$","$L5",null,{"children":["$","div",null,{"className":"flex w-full","children":[["$","div",null,{"className":"fixed inset-0 flex justify-center sm:px-8","children":["$","div",null,{"className":"flex w-full max-w-7xl lg:px-8","children":["$","div",null,{"className":"w-full bg-white ring-1 ring-zinc-100 dark:bg-zinc-900 dark:ring-zinc-300/20"}]}]}],["$","div",null,{"className":"relative flex w-full flex-col","children":[["$","$L6",null,{}],["$","main",null,{"className":"flex-auto","children":["$","$L3",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":["$","div",null,{"className":"sm:px-8 flex h-full items-center pt-16 sm:pt-32","children":["$","div",null,{"className":"mx-auto w-full max-w-7xl lg:px-8","children":["$","div",null,{"className":"relative px-4 sm:px-8 lg:px-12","children":["$","div",null,{"className":"mx-auto max-w-2xl lg:max-w-5xl","children":["$","div",null,{"className":"flex flex-col items-center","children":[["$","p",null,{"className":"text-base font-semibold text-zinc-400 dark:text-zinc-500","children":"404"}],["$","h1",null,{"className":"mt-4 text-4xl font-bold tracking-tight text-rose-800 sm:text-5xl dark:text-rose-100","children":"Page not found"}],["$","p",null,{"className":"mt-4 text-base text-zinc-600 dark:text-zinc-400","children":"Sorry, we couldn’t find the page you’re looking for."}],["$","p",null,{"className":"mt-4 text-base text-zinc-600 dark:text-zinc-400","children":["You may want to try"," ",["$","a",null,{"href":"https://archive.amimetic.co.uk","className":"font-semibold text-rose-600 hover:text-rose-500","children":"the old version of this website"}]," ","as not everything was included here."]}],["$","$L7",null,{"className":"inline-flex items-center gap-2 justify-center rounded-md py-2 px-3 text-sm outline-offset-2 transition active:transition-none bg-zinc-50 font-medium text-zinc-900 hover:bg-zinc-100 active:bg-zinc-100 active:text-zinc-900/60 dark:bg-zinc-800/50 dark:text-zinc-300 dark:hover:bg-zinc-800 dark:hover:text-zinc-50 dark:active:bg-zinc-800/50 dark:active:text-zinc-50/70 mt-4","href":"/","children":"Go back home"}]]}]}]}]}]}],"notFoundStyles":[],"styles":null}]}],["$","footer",null,{"className":"mt-32 flex-none","children":["$","div",null,{"className":"sm:px-8","children":["$","div",null,{"className":"mx-auto w-full max-w-7xl lg:px-8","children":["$","div",null,{"className":"border-t border-zinc-100 pb-16 pt-10 dark:border-zinc-700/40","children":["$","div",null,{"className":"relative px-4 sm:px-8 lg:px-12","children":["$","div",null,{"className":"mx-auto max-w-2xl lg:max-w-5xl","children":["$","div",null,{"className":"flex flex-col items-center justify-between gap-6 sm:flex-row","children":[["$","div",null,{"className":"flex flex-wrap justify-center gap-x-6 gap-y-1 text-sm font-medium text-zinc-800 dark:text-zinc-200","children":[["$","$L7",null,{"href":"/about","className":"transition hover:text-sky-500 dark:hover:text-sky-400","children":"About"}],["$","$L7",null,{"href":"/blog","className":"transition hover:text-sky-500 dark:hover:text-sky-400","children":"Writing"}],["$","$L7",null,{"href":"/projects","className":"transition hover:text-sky-500 dark:hover:text-sky-400","children":"Projects"}]]}],["$","p",null,{"className":"text-sm text-zinc-400 dark:text-zinc-500","children":["© ",2024," James Porter"]}]]}]}]}]}]}]}]}]]}]]}]}]}]}],null],null],[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/3dda7107ffc2265a.css","precedence":"next","crossOrigin":"$undefined"}]],"$L8"]]]] 8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"Articles - James Porter"}],["$","meta","3",{"name":"description","content":"All of my long-form thoughts on programming, leadership, product design, and more, collected in chronological order."}]] 1:null 2:["$","div",null,{"className":"sm:px-8 mt-16 sm:mt-32","children":["$","div",null,{"className":"mx-auto w-full max-w-7xl lg:px-8","children":["$","div",null,{"className":"relative px-4 sm:px-8 lg:px-12","children":["$","div",null,{"className":"mx-auto max-w-2xl lg:max-w-5xl","children":[["$","header",null,{"className":"max-w-2xl","children":[["$","h1",null,{"className":"text-4xl font-bold tracking-tight text-zinc-800 sm:text-5xl dark:text-zinc-100","children":"Software / Creative Coding / Ideas"}],["$","p",null,{"className":"mt-6 text-base text-zinc-600 dark:text-zinc-400","children":"Long-form articles about things I find interesting"}]]}],["$","div",null,{"className":"mt-16 sm:mt-20","children":["$","div",null,{"className":"md:border-l md:border-zinc-100 md:pl-6 md:dark:border-zinc-700/40","children":["$","div",null,{"className":"flex max-w-3xl flex-col space-y-16","children":[["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/combining-vector-and-shaders-for-2d-art","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Combining Vector Graphics and Shaders with Solandra"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","15 June 2024"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2024-06-15T17:17:58.655Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"15 June 2024"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/creating-sketches-with-solandra-for-amimetic","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Creating sketches with Solandra for the Amimetic website"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","8 June 2024"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2024-06-08","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"8 June 2024"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/ray-marching-with-swift-and-metal-for-shadertoy-like-graphics","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Raymarching with Swift and Metal for Shadertoy-like Graphics"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","17 April 2024"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2024-04-19T16:30:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"19 April 2024"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/no-code-creative-coding-generative-art","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"No Code Creative Coding: A Case Study"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","31 January 2024"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2024-01-31T19:30:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"31 January 2024"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/use-svg-maker-or-creating-svgs-with-react","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"use-svg-maker or creating SVGs with React, A Tutorial"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","21 November 2022"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2022-11-21T20:00:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"21 November 2022"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/swiftui-for-small-internal-desktop-app-tools","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"SwiftUI for Mini Desktop Apps: A Tutorial"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","14 August 2022"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2022-08-14T13:00:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"14 August 2022"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/on-concistency","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"On consistency"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","4 July 2022"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2022-07-04T20:00:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"4 July 2022"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/using-focusstate-and-text-fields-in-swiftui-3","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"@FocusState, TextFields, TextEditor in SwiftUI 3.0"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","18 November 2021"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2021-11-18T13:00:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"18 November 2021"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/swiftui-in-late-2021","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"SwiftUI in late 2021"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","10 November 2021"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2021-11-10T13:00:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"10 November 2021"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/flutter-in-late-2021","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Flutter in late 2021"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","30 October 2021"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2021-10-30T09:00:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"30 October 2021"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/an-introduction-to-generative-animations-with-remotion-and-solandra","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Generative Animated Videos with Remotion (and Solandra)"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","27 October 2021"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2021-10-27T10:21:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"27 October 2021"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/flutter-for-algorithmic-art","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Flutter, an ideal framework for Algorithmic Art?"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","10 October 2021"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2021-10-10T16:48:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"10 October 2021"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/react-native-setup-in-2021","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"React Native Setup in Late 2021"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","31 August 2021"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2021-08-31T00:45:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"31 August 2021"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/an-introduction-to-react-native-reanimated-2","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"An Introduction to React Native Reanimated 2"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","24 August 2021"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2021-08-24T20:00:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"24 August 2021"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/valtio-a-great-default-state-management-solution-for-react","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Valtio: A great state management solution for React"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","18 August 2021"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2021-08-18T12:00:00.000Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"18 August 2021"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/getting-started-with-thermal-printing","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Getting Started with Thermal Printing"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","21 June 2020"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2020-06-21T19:50:05.887Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"21 June 2020"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/getting-started-with-react-native-in-2020","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Getting Started with React Native in 2020"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","19 April 2020"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2020-04-19T09:43:00.887Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"19 April 2020"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/a-concrete-example-of-why-apples-docs-are-terrible","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"A concrete example of why Apple's documentation is terrible"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","21 December 2019"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2019-12-21T18:15:00.887Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"21 December 2019"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/react-ish-ios-apps-a-tutorial","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"React-ish iOS Apps: A Tutorial"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","21 April 2019"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2019-04-21T15:18:59.607Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"21 April 2019"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/starting-with-flutter-from-react-native","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Starting with Flutter (from React Native)"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","27 February 2019"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2019-02-27T16:36:50.128Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"27 February 2019"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/getting-started-with-functional-music-programming","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Getting Started with Functional Music Programming"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","26 February 2019"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2019-02-26T13:53:41.273Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"26 February 2019"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/upgrading-to-elm-0-19-in-early-2019","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Upgrading to Elm 0.19 in early 2019"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","19 February 2019"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2019-02-19T13:55:02.336Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"19 February 2019"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/OpenJSCAD","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"OpenJSCAD"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","23 July 2018"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2018-07-23T20:15:05.887Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"23 July 2018"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/Creating-a-watch","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Creating a Watch"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","28 September 2017"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2017-09-28T20:15:05.887Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"28 September 2017"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/a-few-big-ideas","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"A few big ideas"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","18 December 2016"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2016-12-18T19:10:05.887Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"18 December 2016"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/elixir-versus-javascript","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Elixir versus Javascript"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","11 August 2016"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2016-08-11T19:10:05.887Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"11 August 2016"}]]}]]}],["$","article",null,{"className":"md:grid md:grid-cols-4 md:items-baseline","children":[["$","div",null,{"className":"md:col-span-3 group relative flex flex-col items-start","children":[["$","h2",null,{"className":"text-base font-semibold tracking-tight text-zinc-800 dark:text-zinc-100","children":[["$","div",null,{"className":"absolute -inset-x-4 -inset-y-6 z-0 scale-95 bg-sky-300/25 opacity-0 transition group-hover:scale-100 group-hover:opacity-100 sm:-inset-x-6 sm:rounded-2xl dark:bg-sky-600/50"}],["$","$L7",null,{"href":"/blog/better-british-time","children":[["$","span",null,{"className":"absolute -inset-x-4 -inset-y-6 z-20 sm:-inset-x-6 sm:rounded-2xl"}],["$","span",null,{"className":"relative z-10","children":"Better British Time"}]]}]]}],["$","div",null,{"className":"relative z-10 mt-2 text-sm text-zinc-600 dark:text-zinc-400","children":["Started on: ","2 November 2013"]}]]}],["$","time",null,{"className":"mt-1 hidden md:block relative z-10 order-first mb-3 flex items-center text-sm text-zinc-400 dark:text-zinc-500","dateTime":"2013-11-02T19:10:05.887Z","children":[false,["$","span",null,{"className":"text-lg font-semibold text-sky-600 dark:text-sky-300","children":"2 November 2013"}]]}]]}]]}]}]}]]}]}]}]}]