41554 blogs · [ { "id": "01a0873b-f795-708f-9468-ca402e12f2a2", "title": "From Vibe Coding to Deliberation-First Coding with AI", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/deliberate-coding-ai-agents", "published_at": "2026-02-25T00:00:00+00:00" }, { "id": "01a0873b-f795-708f-9468-ca402ecf6f74", "title": "Being Sneaky with GenAI", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/being-sneaky-with-genai", "published_at": "2026-01-08T00:00:00+00:00" }, { "id": "01a0873b-f795-708f-9468-ca402f2052a3", "title": "How GenAI is shifting architecture left", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/genai-shift-left-software-architecture", "published_at": "2025-11-12T00:00:00+00:00" }, { "id": "01a0873b-f795-708f-9468-ca402f3a5c21", "title": "Have We Finally Reached the Mythical \"10x Developer\"?", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/mythical-10x-developer", "published_at": "2025-10-07T00:00:00+00:00" }, { "id": "01a0873b-f795-708f-9468-ca402fef5b3f", "title": "Mock all functions in a JavaScript module except one using Jest", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/mock-all-functions-module-except-one-jest", "published_at": "2022-05-01T00:00:00+00:00" }, { "id": "01a0873b-f795-708f-9468-ca4030c68921", "title": "Create one-off releases with semantic-release", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/create-one-off-releases-semantic-release", "published_at": "2022-03-13T00:00:00+00:00" }, { "id": "01a0873b-f795-708f-9468-ca403100ccc5", "title": "Putting test files in the pages folder in a Next.js app", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/putting-test-files-pages-folder-nextjs-app", "published_at": "2022-02-13T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c49fc0c3", "title": "Avoiding React act warning when accessibility testing next/link with jest-axe", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/avoiding-react-act-warning-when-accessibility-testing-next-link-jest-axe", "published_at": "2022-01-30T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c5697c86", "title": "Handling the React server hydration mismatch error", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/handling-react-server-mismatch-error", "published_at": "2022-01-17T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c631e13e", "title": "Creating custom generic TypeScript utility types", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/creating-custom-generic-typescript-utility-types", "published_at": "2021-12-21T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c63849bf", "title": "TypeScript user-defined type guards to the rescue", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/typescript-user-defined-type-guards-rescue", "published_at": "2021-12-05T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c6721e2e", "title": "React Testing Library best practices", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/react-testing-library-best-practices", "published_at": "2021-11-21T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c70e68fb", "title": "TypeScript React props: interfaces vs type aliases", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/typescript-react-props-interfaces-type-aliases", "published_at": "2021-11-14T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c74a5e9e", "title": "Wrapping next/link to use with a custom UI Link component", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/wrapping-next-link-custom-ui-link-component", "published_at": "2021-11-07T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c74e0e2c", "title": "What is a DivOps Engineer and what do they do?", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/what-divops-engineer", "published_at": "2021-10-31T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c7a3508f", "title": "Learn TypeScript generics by rebuilding existing utility types", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/learn-typescript-generics-rebuilding-existing-utility-types", "published_at": "2021-10-24T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c83c0b38", "title": "How to extract React component logic into a custom Hook", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/how-to-extract-react-component-logic-custom-hook", "published_at": "2021-10-17T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c8ee05ab", "title": "React useCallback & useMemo use cases", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/react-usecallback-usememo-use-cases", "published_at": "2021-10-10T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466c96e29eb", "title": "Successfully using async functions in React useEffect", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/successfully-using-async-functions-useeffect-react", "published_at": "2021-09-26T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466ca26d513", "title": "Using new-ish & lesser-known JavaScript operators to write concise code", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/using-javascript-operators-write-concise-code", "published_at": "2021-09-19T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466cab64c01", "title": "How to create an SVG gradient loading spinner", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/how-to-create-circle-svg-gradient-loading-spinner", "published_at": "2021-09-12T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466cacd3ff1", "title": "How to shallow clone a JavaScript array", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/how-to-shallow-clone-javascript-array", "published_at": "2021-08-29T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466cb90ed54", "title": "Understanding TypeScript generics through lodash functions", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/understanding-typescript-generics-lodash-functions", "published_at": "2021-08-22T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466cbade9e1", "title": "Forwarding refs for a polymorphic React component in TypeScript", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/forwarding-refs-polymorphic-react-component-typescript", "published_at": "2021-08-15T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466cc56715a", "title": "Initializing the Firebase Admin Node SDK with env vars", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/initializing-firebase-admin-node-sdk-env-vars", "published_at": "2021-08-08T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466cccaf3d0", "title": "The non-destructive JavaScript array methods", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/non-destructive-javascript-array-methods", "published_at": "2021-07-25T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466cd40ef34", "title": "Learn the Array reduce method by re-implementing lodash functions", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/learn-array-reduce-method-reimplementing-lodash-functions", "published_at": "2021-07-18T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466cd785e82", "title": "Exploring the JavaScript Promise API methods", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/exploring-javascript-promise-api-methods", "published_at": "2021-07-11T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466ce2d2fe3", "title": "Tools to catch accessibility errors in JavaScript applications", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/tools-catch-accessibility-errors-javascript-applications", "published_at": "2021-07-05T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466ce69d13b", "title": "Catch warnings in Jest tests", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/catch-warnings-jest-tests", "published_at": "2021-06-27T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466ce812200", "title": "Creating a React controlled components pattern custom Hook", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/create-react-controlled-components-pattern-custom-hook", "published_at": "2021-06-13T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466ce85283a", "title": "Extracting TypeScript types from functions, objects & arrays", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/extracting-typescript-types-functions-objects-arrays", "published_at": "2021-06-06T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466cf0d2ff3", "title": "Picking the right React component pattern", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/picking-right-react-component-pattern", "published_at": "2021-05-31T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466cfd83811", "title": "Create a dynamic sitemap with a Next.js API route", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/create-dynamic-sitemap-nextjs-api-route", "published_at": "2021-05-23T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466d08dc729", "title": "Looping in React", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/looping-in-react", "published_at": "2021-05-16T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466d152e75c", "title": "Conditional rendering in React", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/conditional-rendering-react", "published_at": "2021-05-09T00:00:00+00:00" }, { "id": "01a0873b-f796-731a-87f9-d466d2316628", "title": "End-to-end testing with Firebase Emulator and Github Actions", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/end-to-end-testing-firebase-emulator-github-actions", "published_at": "2021-05-02T00:00:00+00:00" }, { "id": "01a0873b-f79c-709a-81be-479b7d44c602", "title": "Using Jest mock functions in TypeScript", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/using-jest-mock-functions-typescript", "published_at": "2021-04-25T00:00:00+00:00" }, { "id": "01a0873b-f79c-709a-81be-479b7e41bc7b", "title": "25 VS Code extensions for max productivity", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/25-vscode-extensions-max-productivity", "published_at": "2021-04-18T00:00:00+00:00" }, { "id": "01a0873b-f79c-709a-81be-479b7e834793", "title": "50 shades of React rendering with Next.js", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/50-shades-react-rendering-nextjs", "published_at": "2021-04-11T00:00:00+00:00" }, { "id": "01a0873b-f79c-709a-81be-479b7f71cb6d", "title": "9 single-statement JS algorithms for common data transformations", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/9-single-statement-javascript-algorithms-common-data-transformations", "published_at": "2021-04-04T00:00:00+00:00" }, { "id": "01a0873b-f79c-709a-81be-479b805e0547", "title": "Quickie fetch timeout", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/quickie-fetch-timeout", "published_at": "2021-03-28T00:00:00+00:00" }, { "id": "01a0873b-f79c-709a-81be-479b814659da", "title": "Copy to clipboard React custom Hook", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/copy-to-clipboard-react-custom-hook", "published_at": "2021-03-21T00:00:00+00:00" }, { "id": "01a0873b-f79c-709a-81be-479b81bb0fd5", "title": "Create an object lookup from an array of JavaScript objects", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/create-object-lookup-array-javascript-objects", "published_at": "2021-03-14T00:00:00+00:00" }, { "id": "01a0873b-f79c-709a-81be-479b82281f4c", "title": "Auto-generate React PropTypes from TypeScript components", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/auto-generate-react-prop-types-typescript-components", "published_at": "2021-03-07T00:00:00+00:00" }, { "id": "01a0873b-f79c-709a-81be-479b8259fba1", "title": "Sync to localStorage with React useReducer Hook", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/sync-localstorage-react-usereducer-hook", "published_at": "2021-02-28T00:00:00+00:00" }, { "id": "01a0873b-f79c-709a-81be-479b833e71ff", "title": "React custom Hooks vs. Mixins", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/react-custom-hooks-mixins", "published_at": "2021-02-21T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cb8080b01", "title": "5 tips for a healthier DivOps setup", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/5-tips-healthier-divops-setup", "published_at": "2021-02-14T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cb8cc0cfb", "title": "8 helpful custom React Hooks", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/8-helpful-custom-react-hooks", "published_at": "2021-02-07T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cb97f0ba1", "title": "Prettier + ESLint = ❤️", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/prettier-eslint", "published_at": "2021-01-31T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cb9e2c6a8", "title": "Handling async React component effects after unmount", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/handling-async-react-component-effects-after-unmount", "published_at": "2021-01-24T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbaae6807", "title": "Use cases for TypeScript const assertions", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/use-cases-typescript-const-assertions", "published_at": "2021-01-17T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbb2e27f4", "title": "When to use TypeScript unknown vs any", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/when-use-typescript-unknown-versus-any", "published_at": "2021-01-10T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbb3249d3", "title": "Object & array dependencies in the React useEffect Hook", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/object-array-dependencies-react-useEffect-hook", "published_at": "2021-01-03T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbc0b5cce", "title": "Conditional React Hooks", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/conditional-react-hooks", "published_at": "2020-12-27T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbcc21bf7", "title": "Quick way to sort a JavaScript array by multiple fields", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/quick-way-sort-javascript-array-multiple-fields", "published_at": "2020-12-20T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbd4e70df", "title": "10 modern JavaScript features to be awesome at React", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/10-modern-javascript-features-awesome-react", "published_at": "2020-12-13T00:00:00+00:00" }, { "id": "01a0dd6a-5347-702c-814b-8217c9d272c6", "title": "Polymorphic React Components in TypeScript", "url": "https://www.benmvp.com/blog/polymorphic-react-components-typescript/", "published_at": "2020-12-08T03:14:30+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbdcab169", "title": "Quickie fetch JSON helper for TypeScript", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/quickie-fetch-json-helper-for-typescript", "published_at": "2020-12-06T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbe02b7b7", "title": "Filtering undefined elements from an array in TypeScript", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/filtering-undefined-elements-from-array-typescript", "published_at": "2020-11-29T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbe376c9e", "title": "Type-checking React useReducer in TypeScript", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/type-checking-react-usereducer-typescript", "published_at": "2020-11-22T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbe64dd64", "title": "Generic React Components in TypeScript", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/generic-react-components-typescript", "published_at": "2020-11-15T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbf26ed98", "title": "Polymorphic React Components in TypeScript", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/polymorphic-react-components-typescript", "published_at": "2020-11-08T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbf605129", "title": "Conditional React props with TypeScript", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/conditional-react-props-typescript", "published_at": "2020-11-01T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cbf972cc7", "title": "Easily kill a process running on a port", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/kill-process-running-port", "published_at": "2020-10-18T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc05e31d7", "title": "Helper functions in the React useEffect hook", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/helper-functions-react-useeffect-hook", "published_at": "2020-10-11T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc0e52384", "title": "Four characters can optimize your React component", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/four-characters-optimize-react-component", "published_at": "2020-10-03T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc110e5ff", "title": "Configurability in a Design System", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/configurability-design-system", "published_at": "2020-08-27T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc1ec6f7b", "title": "Mocking window.location methods in Jest & jsdom", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/mocking-window-location-methods-jest-jsdom", "published_at": "2020-08-06T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc20bbe94", "title": "A quick trick for Jest asynchronous tests", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/quick-trick-jest-asynchronous-tests", "published_at": "2020-07-29T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc2733933", "title": "Asynchronous testing with Enzyme & React in Jest", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/asynchronous-testing-with-enzyme-react-jest", "published_at": "2020-07-15T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc2f84b72", "title": "The best way to learn React", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/best-way-to-learn-react", "published_at": "2020-06-29T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc36f3c99", "title": "React Prop Types with TypeScript", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/react-prop-types-with-typescript", "published_at": "2020-06-11T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc3781edd", "title": "Integrating Bugsnag into GatsbyJS and Netlify", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/integrating-bugsnag-into-gatsbyjs-netlify", "published_at": "2020-06-05T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc4637458", "title": "ECMAScript pattern matching proposal", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/ecmascript-pattern-matching-proposal", "published_at": "2020-05-29T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc48c0250", "title": "The Popoff Progression", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/popoff-progression", "published_at": "2020-05-22T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc4ac5c4e", "title": "Introducing Minishops", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/introducing-minishops", "published_at": "2020-05-18T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc4c6a5c1", "title": "What exactly is a \"Design System\"?", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/what-exactly-is-a-design-system", "published_at": "2020-05-08T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc51c08ed", "title": "New Gatsby site!", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/new-gatsby-site", "published_at": "2020-04-29T00:00:00+00:00" }, { "id": "01a0873b-f79d-73f6-82c6-487cc6192f8d", "title": "Nested string interpolation in JavaScript", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/nested-string-interpolation-in-javascript", "published_at": "2020-04-27T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a2b01ebed", "title": "Capture DOM element screenshots in Chrome", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/capture-dom-element-screenshots-in-chrome", "published_at": "2020-04-24T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a2b33f415", "title": "Check out react-jsonschema-form", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/check-out-react-jsonschema-form", "published_at": "2020-04-23T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a2c10b034", "title": "React Testing Library over Enzyme", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/react-testing-library-over-enzyme", "published_at": "2020-04-21T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a2ccbcd16", "title": "New React useOpaqueIdentifier hook coming soon", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/new-react-use-opaque-identifier-hook-coming-soon", "published_at": "2020-04-17T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a2d3b763f", "title": "I'm a Google Developer Expert!", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/google-developer-expert", "published_at": "2019-07-10T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a2d936344", "title": "MVP! MVP! MVP!", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/microsoft-mvp", "published_at": "2018-12-01T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a2dc5e031", "title": "New Gatsby Blog!", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/new-gatsby-blog", "published_at": "2018-05-04T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a2ec07de3", "title": "12 tricks for ES6 fun", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/learning-es6-12-tricks-for-es6-fun", "published_at": "2016-10-25T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a2f2d4a6c", "title": "Speaking at NodeSummit 2016", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/nodesummit-2016", "published_at": "2016-09-23T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a2fd6a4d9", "title": "Front Porch Austin 2016", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/front-porch-austin-2016", "published_at": "2016-09-19T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a303058d5", "title": "NDC Oslo 2016", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/ndc-oslo-2016", "published_at": "2016-07-21T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a31019daa", "title": "NationJS Node Day 2016", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/nationjs-nodeday-2016", "published_at": "2016-06-12T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a31098609", "title": "Generators as iterators", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/learning-es6-generators-as-iterators", "published_at": "2016-01-13T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a320241ce", "title": "Iterators & iterables", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/learning-es6-iterators-iterables", "published_at": "2015-12-27T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a32565fdf", "title": "New collections", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/learning-es6-new-collections", "published_at": "2015-12-20T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a33558112", "title": "Classes", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/learning-es6-classes", "published_at": "2015-12-11T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a3365c5f2", "title": "for-of loop", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/learning-es6-for-of-loop", "published_at": "2015-11-30T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a33ac0c2d", "title": "Little Rock Tech Fest 2015", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/little-rock-tech-fest-2015", "published_at": "2015-11-22T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a343727bb", "title": "Nodevember 2015", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/nodevember-2015", "published_at": "2015-11-22T00:00:00+00:00" }, { "id": "01a0873b-f79e-7292-b30d-cb6a35111f77", "title": "Promises", "url": "https://www.benmvp.com/blog/benmvp-58narrjea-benmvp-dev.vercel.app/blog/learning-es6-promises", "published_at": "2015-09-27T00:00:00+00:00" } ] posts Claim your blog
Back to benmvp.com
Blog · corpus.blog/blogs/benmvp.com/posts

benmvp.com

benmvp.com

2026

2025

2022

2021

2020

2019

2018

2016

2015