41554 blogs · [ { "id": "01a08759-7c58-7208-88d5-c4bbf83c6560", "title": "On AI: Where it's earned its keep in my workflow, and where it hasn't", "url": "https://brockherion.com/blog/on-ai/", "published_at": "2026-05-10T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbf844c36c", "title": "AI vs Open Source: Cal.com and the threat AI poses to open source software", "url": "https://brockherion.com/blog/ai-vs-open-source/", "published_at": "2026-04-16T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbf8bb3df1", "title": "I'm Leaving Twitter", "url": "https://brockherion.com/blog/im-leaving-twitter/", "published_at": "2024-12-03T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbf92e114a", "title": "Dynamic 'where' statements in Drizzle", "url": "https://brockherion.com/blog/dynamic-where-statements-in-drizzle/", "published_at": "2024-07-17T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbf938951c", "title": "Why I use Next.js", "url": "https://brockherion.com/blog/why-i-use-nextjs/", "published_at": "2024-07-09T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbf938cacb", "title": "Data Fetching in Next.js", "url": "https://brockherion.com/blog/data-fetching-in-nextjs/", "published_at": "2024-07-07T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbf95d17e0", "title": "Running a CRON job in Next.js with Queuebase", "url": "https://brockherion.com/blog/running-a-cron-job-in-nextjs-with-queuebase/", "published_at": "2024-06-09T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbf96bfe87", "title": "How to use tRPC with Next.js App Router", "url": "https://brockherion.com/blog/how-to-use-trpc-with-nextjs-app-router/", "published_at": "2024-06-06T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfa5f0f4a", "title": "Introducing Queuebase - Background job and queue management for Next.js", "url": "https://brockherion.com/blog/introducing-queuebase/", "published_at": "2024-06-05T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfb27ef98", "title": "Building a Startup in Two Weeks", "url": "https://brockherion.com/blog/building-a-startup-in-two-weeks/", "published_at": "2024-05-26T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfbcf4756", "title": "Setting up React Query in a Next.js application", "url": "https://brockherion.com/blog/setting-up-and-using-react-query-in-nextjs/", "published_at": "2024-01-27T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfc1f481f", "title": "Setting up and using React Query in a Remix application", "url": "https://brockherion.com/blog/setting-up-and-using-react-query-in-a-remix-application/", "published_at": "2024-01-24T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfcc6ee24", "title": "My goals for 2024", "url": "https://brockherion.com/blog/my-goals-for-2024/", "published_at": "2024-01-20T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfd2f4255", "title": "Creating extendable Zod schemas with refine", "url": "https://brockherion.com/blog/creating-extendable-zod-schemas-with-refine/", "published_at": "2024-01-17T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfd3965a6", "title": "How to fix the ‘Already 10 Prisma Clients are actively running’ error in Prisma", "url": "https://brockherion.com/blog/how-to-fix-the-already-10-active-clients-running-error-prisma/", "published_at": "2023-11-19T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfe0a0f77", "title": "My experience with Remix as a Next.js developer", "url": "https://brockherion.com/blog/my-experience-with-remix/", "published_at": "2023-11-11T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfe6e5078", "title": "Getting started with QStash and Next.js", "url": "https://brockherion.com/blog/getting-started-with-qstash-and-nextjs/", "published_at": "2023-11-05T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfe805e7a", "title": "Using React Hook Form with Next.js 13 Server Actions", "url": "https://brockherion.com/blog/using-react-hook-form-with-nextjs-13-server-actions/", "published_at": "2023-10-08T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbfef1af62", "title": "How to use Drizzle with Planetscale", "url": "https://brockherion.com/blog/how-to-use-drizzle-with-planetscale/", "published_at": "2023-09-30T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bbffacf114", "title": "How to do conditional 'where' statements in Prisma", "url": "https://brockherion.com/blog/how-to-do-conditional-where-statements-in-prisma/", "published_at": "2023-08-20T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc00889021", "title": "brockherion.dev site updates", "url": "https://brockherion.com/blog/brockheriondev-site-updates/", "published_at": "2023-08-12T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc0175edd2", "title": "Next.js - A simple fix for hydration issues", "url": "https://brockherion.com/blog/nextjs-fixing-hydration-issues-with-zustand/", "published_at": "2023-07-29T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc01b0edab", "title": "SSR vs CSR vs SSG: Which is right for your site?", "url": "https://brockherion.com/blog/ssr-vs-csr-vs-ssg/", "published_at": "2023-06-17T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc01cdff99", "title": "5 databases to use for your next app", "url": "https://brockherion.com/blog/5-databases-to-use-for-your-next-app/", "published_at": "2023-05-20T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc01f21236", "title": "Getting started blogging in 2023", "url": "https://brockherion.com/blog/getting-started-blogging-in-2023/", "published_at": "2023-05-06T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc0203185e", "title": "Vercel is doing storage now", "url": "https://brockherion.com/blog/vercel-is-doing-storage-now/", "published_at": "2023-05-02T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc029c027f", "title": "Why I'm using NanoIDs for my database keys", "url": "https://brockherion.com/blog/why-im-using-nanoids-for-my-database-keys/", "published_at": "2023-04-29T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc02dbd7cf", "title": "Eight great React libraries you need to be using in 2023", "url": "https://brockherion.com/blog/8-great-react-libraries-you-need-to-be-using-in-2023/", "published_at": "2023-04-16T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc02ffa8ac", "title": "Tech I'm shipping with in 2023", "url": "https://brockherion.com/blog/tech-im-shipping-with-in-2023/", "published_at": "2023-04-01T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc03e150e3", "title": "My goals for 2023", "url": "https://brockherion.com/blog/my-goals-for-2023/", "published_at": "2023-03-25T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc03fdbd49", "title": "You might be using JavaScript objects wrong", "url": "https://brockherion.com/blog/you-might-be-using-javascript-objects-wrong/", "published_at": "2023-03-18T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc041cbd43", "title": "Build bulletproof React forms with Zod and React Hook Form", "url": "https://brockherion.com/blog/build-bulletproof-react-forms-with-zod-and-react-hook-form/", "published_at": "2023-03-08T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc0464fa99", "title": "The use hook is a game changer for React", "url": "https://brockherion.com/blog/the-use-hook-is-a-game-changer-for-react/", "published_at": "2022-10-17T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc04b4e9cc", "title": "Enums vs String Literal Types in TypeScript", "url": "https://brockherion.com/blog/enums-vs-typed-strings-in-typescript/", "published_at": "2022-10-11T00:00:00+00:00" }, { "id": "01a08759-7c58-7208-88d5-c4bc04c36006", "title": "Keep your async code fast with Promise.all()", "url": "https://brockherion.com/blog/keep-your-async-code-fast-with-promise-all/", "published_at": "2022-09-01T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e203c1a13", "title": "Setting up a monorepo with pnpm and TypeScript", "url": "https://brockherion.com/blog/setting-up-a-monorepo-with-pnpm-and-typescript/", "published_at": "2022-08-01T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e20e130bc", "title": "Fixing issues and finding new ones - Chirpmark Devlog #3", "url": "https://brockherion.com/blog/fixing-issues-and-finding-new-ones/", "published_at": "2022-07-25T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e210ac3bd", "title": "Finding a focus - Chirpmark Devlog #2", "url": "https://brockherion.com/blog/chirpmark-devlog-finding-a-focus/", "published_at": "2022-07-18T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e2196111b", "title": "My favorite Mac apps for programming (July 2022)", "url": "https://brockherion.com/blog/my-favorite-mac-apps-for-programming-july-2022/", "published_at": "2022-07-14T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e226e635e", "title": "'Welcome to Chirpmark! - Chirpmark Devlog #1'", "url": "https://brockherion.com/blog/welcome-to-chirpmark/", "published_at": "2022-07-11T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e2309be3d", "title": "Is your website climate-friendly?", "url": "https://brockherion.com/blog/is-your-website-climate-friendly/", "published_at": "2022-07-02T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e23a317e1", "title": "I rebuilt my Next.js site in Astro. Does it live up to the hype?", "url": "https://brockherion.com/blog/i-rebuilt-my-site-in-astro/", "published_at": "2022-06-28T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e23b1f26a", "title": "Using higher-order functions to build per-page layouts in Next.js", "url": "https://brockherion.com/blog/using-higher-order-functions-to-build-per-page-layouts-in-nextjs/", "published_at": "2022-05-12T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e24036372", "title": "Things about software development I wish somebody had told me", "url": "https://brockherion.com/blog/things-about-software-development/", "published_at": "2022-05-02T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e24a7ac75", "title": "How I built brockherion.dev", "url": "https://brockherion.com/blog/how-i-built-brockherion-dev/", "published_at": "2022-04-26T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e2594e162", "title": "Stop building REST APIs for your Next.js apps, use tRPC instead", "url": "https://brockherion.com/blog/stop-building-rest-apis-for-your-next-apps/", "published_at": "2022-04-04T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e25eda8f8", "title": "The Top 5 Must-Read Books for Software Developers", "url": "https://brockherion.com/blog/the-top-five-must-read-books-for-software-developers/", "published_at": "2022-03-02T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e26409aba", "title": "Building Reusable Components in React with Typescript and Generics", "url": "https://brockherion.com/blog/building-reusable-components-in-react-with-typescript-and-generics/", "published_at": "2022-02-06T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e26a33331", "title": "Creating Per-Page Layouts with Next.JS, Typescript, tRCP, and NextAuth", "url": "https://brockherion.com/blog/creating-per-page-layouts-with-nextjs-typescript-trcp-and-nextauth/", "published_at": "2022-01-07T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e26deddb8", "title": "What did I learn from 2021?", "url": "https://brockherion.com/blog/what-did-i-learn-from-2021/", "published_at": "2022-01-04T00:00:00+00:00" }, { "id": "01a08759-7c59-716b-835a-cb9e26fc2cc2", "title": "Designing and Building REST APIs for Other Humans", "url": "https://brockherion.com/blog/designing-and-building-rest-apis-for-other-humans/", "published_at": "2021-10-14T00:00:00+00:00" } ] posts Claim your blog
Back to brockherion.com
Blog · corpus.blog/blogs/brockherion.com/posts

brockherion.com

brockherion.com

2026

2024

2023

2022

2021