2:I[3403,["403","static/chunks/403-b1650a308eaaf7d9.js","706","static/chunks/app/bookmarks/page-d5d2321ccca4b4bb.js"],""] 3:"$Sreact.fragment" 4:I[2514,["403","static/chunks/403-b1650a308eaaf7d9.js","706","static/chunks/app/bookmarks/page-d5d2321ccca4b4bb.js"],"default"] 5:I[9909,[],""] 6:I[6649,[],""] 7:I[8142,["185","static/chunks/app/layout-b774c9638746f02c.js"],"GoogleTagManager"] 0:["I-Bvn3I9raM8sbszANdNC",[[["",{"children":["bookmarks",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",{"children":["bookmarks",{"children":["__PAGE__",{},[["$L1",[["$","script",null,{"id":"structured-data","type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org/\",\"@type\":\"Person\",\"name\":\"Anton Prudkohliad\",\"url\":\"https://www.prudkohliad.com\",\"sameAs\":[\"https://github.com/prutya\",\"https://www.linkedin.com/in/anton-prudkohliad\"],\"jobTitle\":\"Software Engineer\"}"}}],[["$","header",null,{"className":"fixed top-0 left-0 z-50 w-full border-b border-stone-200 dark:border-gray16 bg-stone-50 dark:bg-gray7 md:bg-stone-50/80 md:dark:bg-gray7/80 md:backdrop-blur-sm md:backdrop-saturate-150","children":["$","div",null,{"className":"m-auto w-full max-w-3xl h-14 px-5 flex items-center justify-between","children":[["$","$L2",null,{"href":"/","className":"font-mono after:content-['▁'] after:text-xs","children":"prudkohliad"}],["$","ul",null,{"className":"flex flex-row gap-1","children":[["$","li","My GitHub profile",{"className":"flex justify-center items-center w-6","children":["$","$L2",null,{"href":"https://github.com/prutya","title":"My GitHub profile","target":"_blank","rel":"noopener","className":"block","children":["$","svg",null,{"width":16,"height":16,"children":["$","use",null,{"href":"/icons.svg#svg-icon-github"}]}]}]}],["$","li","My LinkedIn profile",{"className":"flex justify-center items-center w-6","children":["$","$L2",null,{"href":"https://www.linkedin.com/in/anton-prudkohliad","title":"My LinkedIn profile","target":"_blank","rel":"noopener","className":"block","children":["$","svg",null,{"width":16,"height":16,"children":["$","use",null,{"href":"/icons.svg#svg-icon-linkedin"}]}]}]}],["$","li","My X (formerly Twitter) profile",{"className":"flex justify-center items-center w-6","children":["$","$L2",null,{"href":"https://twitter.com/aprudkohliad","title":"My X (formerly Twitter) profile","target":"_blank","rel":"noopener","className":"block","children":["$","svg",null,{"width":16,"height":16,"children":["$","use",null,{"href":"/icons.svg#svg-icon-twitter"}]}]}]}],["$","li","My Reddit profile",{"className":"flex justify-center items-center w-6","children":["$","$L2",null,{"href":"https://www.reddit.com/user/prutya","title":"My Reddit profile","target":"_blank","rel":"noopener","className":"block","children":["$","svg",null,{"width":16,"height":16,"children":["$","use",null,{"href":"/icons.svg#svg-icon-reddit"}]}]}]}],["$","li","anton.prudkohliad@protonmail.com",{"className":"flex justify-center items-center w-6","children":["$","$L2",null,{"href":"mailto:anton.prudkohliad@protonmail.com","title":"anton.prudkohliad@protonmail.com","target":"_blank","rel":"noopener","className":"block","children":["$","svg",null,{"width":16,"height":16,"children":["$","use",null,{"href":"/icons.svg#svg-icon-email"}]}]}]}]]}]]}]}],["$","main",null,{"className":"m-auto w-full max-w-3xl px-5 pt-14 mb-8 flex-grow","children":[["$","div",null,{"className":"mt-5","children":["$","nav",null,{"className":"font-mono","children":[["$","$L2",null,{"href":"/","className":"inline-block underline-thin","children":"home"}],[["$","span",null,{"className":"ml-0.5","children":"/"}],["$","span",null,{"className":"ml-0.5","children":"bookmarks"}]]]}]}],[["$","h1",null,{"className":"h1","children":"Bookmarks, page 1 of 68"}],["$","div",null,{"className":"mt-5","children":["$","ul",null,{"children":[["$","li","https://www.reddit.com/r/reactjs/s/UbxsWLohbW",{"className":"","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://www.reddit.com/r/reactjs/s/UbxsWLohbW","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["“Where do you guys store JWT for authentication?”",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],"$undefined",["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","security",{"href":"/bookmarks/tags/security","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"security"}],["$","$L2","web",{"href":"/bookmarks/tags/web","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"web"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-09-02T19:14:00.000Z","children":"2024-09-02 19:14"}]}]]}],["$","li","https://orbstack.dev/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://orbstack.dev/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["OrbStack",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["Docker Desktop alternative",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","mac",{"href":"/bookmarks/tags/mac","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"mac"}],["$","$L2","tools",{"href":"/bookmarks/tags/tools","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"tools"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-09-02T19:12:00.000Z","children":"2024-09-02 19:12"}]}]]}],["$","li","https://mattermost.com/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://mattermost.com/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["Mattermost",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["Open-source Slack",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","tools",{"href":"/bookmarks/tags/tools","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"tools"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-30T14:10:00.000Z","children":"2024-08-30 14:10"}]}]]}],["$","li","https://nocodb.com/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://nocodb.com/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["NocoDB",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["NocoDB allows building no-code database solutions with ease of spreadsheets",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","tools",{"href":"/bookmarks/tags/tools","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"tools"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-30T13:30:00.000Z","children":"2024-08-30 13:30"}]}]]}],["$","li","https://www.appflowy.io/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://www.appflowy.io/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["AppFlowy",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["AI collaborative workspace where you achieve more without losing control of your data",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","tools",{"href":"/bookmarks/tags/tools","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"tools"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-30T13:25:00.000Z","children":"2024-08-30 13:25"}]}]]}],["$","li","https://www.cursor.com/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://www.cursor.com/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["Cursor",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["An AI Code Editor",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","ai",{"href":"/bookmarks/tags/ai","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"ai"}],["$","$L2","devx",{"href":"/bookmarks/tags/devx","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"devx"}],["$","$L2","tools",{"href":"/bookmarks/tags/tools","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"tools"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-29T07:28:00.000Z","children":"2024-08-29 07:28"}]}]]}],["$","li","https://utteranc.es/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://utteranc.es/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["utterances",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["A lightweight comments widget built on GitHub issues",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","js",{"href":"/bookmarks/tags/js","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"js"}],["$","$L2","ui-ux",{"href":"/bookmarks/tags/ui-ux","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"ui-ux"}],["$","$L2","web",{"href":"/bookmarks/tags/web","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"web"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-18T08:16:00.000Z","children":"2024-08-18 08:16"}]}]]}],["$","li","https://mccue.dev/pages/8-16-24-just-use-postgres",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://mccue.dev/pages/8-16-24-just-use-postgres","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["Just Use Postgres",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["TL;DR: When you are making a new application that requires persistent storage of data, like is the case for most web applications, your default choice should be Postgres",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","architecture",{"href":"/bookmarks/tags/architecture","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"architecture"}],["$","$L2","db",{"href":"/bookmarks/tags/db","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"db"}],["$","$L2","postgres",{"href":"/bookmarks/tags/postgres","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"postgres"}],["$","$L2","sqlite",{"href":"/bookmarks/tags/sqlite","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"sqlite"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-18T08:16:00.000Z","children":"2024-08-18 08:16"}]}]]}],["$","li","https://www.sqlite.org/quirks.html",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://www.sqlite.org/quirks.html","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["Quirks, Caveats, and Gotchas In SQLite",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],"$undefined",["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","db",{"href":"/bookmarks/tags/db","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"db"}],["$","$L2","sqlite",{"href":"/bookmarks/tags/sqlite","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"sqlite"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-18T08:11:00.000Z","children":"2024-08-18 08:11"}]}]]}],["$","li","https://www.nativewind.dev/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://www.nativewind.dev/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["NativeWind",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["Tailwind CSS as scripting language to create a universal style system for React Native. NativeWind components can be shared between platforms and will output their styles as CSS StyleSheet on web and StyleSheet.create for native.",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","mobile",{"href":"/bookmarks/tags/mobile","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"mobile"}],["$","$L2","react",{"href":"/bookmarks/tags/react","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"react"}],["$","$L2","ui-ux",{"href":"/bookmarks/tags/ui-ux","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"ui-ux"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-18T07:39:00.000Z","children":"2024-08-18 07:39"}]}]]}],["$","li","https://daypicker.dev/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://daypicker.dev/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["React DayPicker",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["A React component to create date pickers, calendars, and date inputs for web applications.",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","js",{"href":"/bookmarks/tags/js","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"js"}],["$","$L2","react",{"href":"/bookmarks/tags/react","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"react"}],["$","$L2","ui-ux",{"href":"/bookmarks/tags/ui-ux","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"ui-ux"}],["$","$L2","web",{"href":"/bookmarks/tags/web","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"web"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-16T18:21:00.000Z","children":"2024-08-16 18:21"}]}]]}],["$","li","https://matthewsetter.com/start-step-through-debugging-go-vscode/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://matthewsetter.com/start-step-through-debugging-go-vscode/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["Debug Go Code with Visual Studio Code",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],"$undefined",["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","go",{"href":"/bookmarks/tags/go","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"go"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-15T21:31:00.000Z","children":"2024-08-15 21:31"}]}]]}],["$","li","https://github.com/electric-sql/pglite",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://github.com/electric-sql/pglite","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["electric-sql/pglite",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["Lightweight Postgres packaged as WASM into a TypeScript library for the browser, Node.js, Bun and Deno",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","db",{"href":"/bookmarks/tags/db","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"db"}],["$","$L2","postgres",{"href":"/bookmarks/tags/postgres","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"postgres"}],["$","$L2","web",{"href":"/bookmarks/tags/web","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"web"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-13T19:55:00.000Z","children":"2024-08-13 19:55"}]}]]}],["$","li","https://www.joshwcomeau.com/react/server-components/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://www.joshwcomeau.com/react/server-components/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["Making Sense of React Server Components",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],"$undefined",["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","js",{"href":"/bookmarks/tags/js","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"js"}],["$","$L2","react",{"href":"/bookmarks/tags/react","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"react"}],["$","$L2","web",{"href":"/bookmarks/tags/web","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"web"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-13T19:43:00.000Z","children":"2024-08-13 19:43"}]}]]}],["$","li","https://github.com/primer/octicons",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://github.com/primer/octicons","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["primer/octicons",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["A scalable set of icons handcrafted with <3 by GitHub",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","ui-ux",{"href":"/bookmarks/tags/ui-ux","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"ui-ux"}],["$","$L2","web",{"href":"/bookmarks/tags/web","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"web"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-12T17:54:00.000Z","children":"2024-08-12 17:54"}]}]]}],["$","li","https://postgres.new/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://postgres.new/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["Postgres Sandbox",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["In-browser Postgres sandbox with AI assistance",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","db",{"href":"/bookmarks/tags/db","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"db"}],["$","$L2","postgres",{"href":"/bookmarks/tags/postgres","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"postgres"}],["$","$L2","tools",{"href":"/bookmarks/tags/tools","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"tools"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-12T16:24:00.000Z","children":"2024-08-12 16:24"}]}]]}],["$","li","https://100go.co/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://100go.co/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["Common Go Mistakes - 100 Go Mistakes and How to Avoid Them",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["This page is a summary of the mistakes in the 100 Go Mistakes and How to Avoid Them book. Meanwhile, it's also open to the community.",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","go",{"href":"/bookmarks/tags/go","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"go"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-12T09:20:00.000Z","children":"2024-08-12 09:20"}]}]]}],["$","li","https://localfirstweb.dev/",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://localfirstweb.dev/","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["Local-First Software",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["So, you want to build an app that has its data co-located with its UI? That works offline? That synchronizes between clients? And that lets its users own their data? Welcome to the world of local-first web development.",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","architecture",{"href":"/bookmarks/tags/architecture","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"architecture"}],["$","$L2","web",{"href":"/bookmarks/tags/web","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"web"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-12T09:17:00.000Z","children":"2024-08-12 09:17"}]}]]}],["$","li","https://pikuma.com/blog/isometric-projection-in-games",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://pikuma.com/blog/isometric-projection-in-games","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["Isometric Projection In Games",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],"$undefined",["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","gamedev",{"href":"/bookmarks/tags/gamedev","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"gamedev"}],["$","$L2","js",{"href":"/bookmarks/tags/js","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"js"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-12T08:28:00.000Z","children":"2024-08-12 08:28"}]}]]}],["$","li","https://github.com/47ng/nuqs",{"className":"mt-8","children":[["$","div",null,{"children":["$","$L2",null,{"href":"https://github.com/47ng/nuqs","target":"_blank","rel":"noopener","className":"inline-block max-w-full break-words underline-thin","children":["nuqs",["$","span",null,{"className":"svg-icon svg-baseline","children":["$","svg",null,{"height":18,"width":18,"children":["$","use",null,{"href":"/icons.svg#svg-icon-external-link"}]}]}]]}]}],["$","p",null,{"className":"break-words mt-1","children":[[["$","$3","0",{"children":["Type-safe search params state manager for Next.js - Like React.useState, but stored in the URL query string.",false]}]]]}],["$","div",null,{"className":"flex flex-wrap gap-2 text-sm","children":[["$","$L2","js",{"href":"/bookmarks/tags/js","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"js"}],["$","$L2","next-js",{"href":"/bookmarks/tags/next-js","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"next-js"}],["$","$L2","react",{"href":"/bookmarks/tags/react","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"react"}],["$","$L2","web",{"href":"/bookmarks/tags/web","className":"flex-shrink-0 py-0.5 text-stone-600 dark:text-stone-400 underline-thin","children":"web"}]]}],["$","div",null,{"className":"text-stone-600 dark:text-stone-400 text-sm mt-1","children":["$","time",null,{"dateTime":"2024-08-10T19:41:00.000Z","children":"2024-08-10 19:41"}]}]]}]]}]}],["$","div",null,{"className":"mt-5 flex justify-center","children":["$","$L4",null,{"pageNumber":0,"totalPages":68,"basePath":"/bookmarks"}]}]]]}],["$","footer",null,{"className":"mt-auto w-full py-5","children":["$","div",null,{"className":"m-auto w-full max-w-3xl relative px-5 text-stone-600 dark:text-stone-400","children":[["$","div",null,{"className":"w-full text-sm","children":"© Anton Prudkohliad 2024"}],["$","div",null,{"className":"absolute top-0 right-5 h-full flex items-center justify-center","children":[["$","a",null,{"href":"/sitemap.xml","title":"Sitemap","className":"w-6 h-6 flex items-center justify-center","target":"_blank","children":["$","svg",null,{"width":16,"height":16,"children":["$","use",null,{"href":"/icons.svg#svg-icon-sitemap"}]}]}],["$","a",null,{"href":"/rss.xml","title":"RSS Feed","className":"ml-1 w-6 h-6 flex items-center justify-center","target":"_blank","children":["$","svg",null,{"width":16,"height":16,"children":["$","use",null,{"href":"/icons.svg#svg-icon-rss"}]}]}]]}]]}]}]]]],null],null]},["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children","bookmarks","children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","notFoundStyles":"$undefined","styles":null}],null]},[["$","html",null,{"lang":"en","className":"__variable_f1af2c __variable_9eb1b7 bg-stone-50 text-gray10 dark:bg-gray7 dark:text-stone-200 font-sans leading-7 h-full scroll-smooth","children":[["$","$L7",null,{"gtmId":"GTM-NCLPMPLL"}],["$","body",null,{"className":"h-full flex flex-col","children":[["$","div",null,{"id":"top"}],["$","$L5",null,{"parallelRouterKey":"children","segmentPath":["children"],"error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L6",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":"404"}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],"notFoundStyles":[],"styles":null}],["$","noscript",null,{"children":["$","iframe",null,{"src":"https://www.googletagmanager.com/ns.html?id=GTM-NCLPMPLL","height":"0","width":"0","style":{"display":"none","visibility":"hidden"}}]}]]}]]}],null],null],[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/01e53d76eacf7286.css","precedence":"next","crossOrigin":"$undefined"}]],[null,"$L8"]]]]] 8:[["$","meta","0",{"name":"viewport","content":"width=device-width, initial-scale=1"}],["$","meta","1",{"charSet":"utf-8"}],["$","title","2",{"children":"prudkohliad/bookmarks"}],["$","meta","3",{"name":"description","content":"Some articles, blog posts, videos, services, documentation pages etc. that I found interesting or useful during my software engineering career."}],["$","link","4",{"rel":"canonical","href":"https://www.prudkohliad.com/bookmarks/1"}],["$","meta","5",{"property":"og:title","content":"prudkohliad/bookmarks"}],["$","meta","6",{"property":"og:description","content":"Some articles, blog posts, videos, services, documentation pages etc. that I found interesting or useful during my software engineering career."}],["$","meta","7",{"property":"og:url","content":"https://www.prudkohliad.com/bookmarks/1"}],["$","meta","8",{"property":"og:site_name","content":"prudkohliad/bookmarks"}],["$","meta","9",{"property":"og:locale","content":"en-US"}],["$","meta","10",{"property":"og:image","content":"https://www.prudkohliad.com/open-graph/root.webp"}],["$","meta","11",{"property":"og:image:alt","content":"A realistic painting of a library"}],["$","meta","12",{"property":"og:image:width","content":"1200"}],["$","meta","13",{"property":"og:image:height","content":"628"}],["$","meta","14",{"property":"og:type","content":"website"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"prudkohliad/bookmarks"}],["$","meta","17",{"name":"twitter:description","content":"Some articles, blog posts, videos, services, documentation pages etc. that I found interesting or useful during my software engineering career."}],["$","meta","18",{"name":"twitter:image","content":"https://www.prudkohliad.com/twitter/root.webp"}],["$","link","19",{"rel":"icon","href":"/favicon.ico","type":"image/x-icon","sizes":"16x16"}],["$","meta","20",{"name":"next-size-adjust"}]] 1:null