Kjetil H
kjetil-hartveit.com
Kjetil H
@kjetil-hartveit.com
Web developer and sports lover. Founder and developer of @fantasy-snooker.com. My personal website is old 😅
I'm trying to understand why I have so many ISR writes with Next.js and Vercel and have created a script which compares two builds, I'm now excluding updatedAt fields with Prisma, moved "use cache" outside of components which took in promises, tried to stabilize outputs from functions
January 1, 2026 at 11:31 PM
Pro tip for evaluating LLM output is looking at its reasoning thoughts. Like humans if something is unclear/contradictory etc then LLMs will also struggle to make sense of it. Clarify your facts/statements in the prompt and you'll get better answers
December 12, 2025 at 11:52 PM
Yeah Prisma 7 this ain't confusing at all
December 2, 2025 at 11:36 PM
That feeling when programming to your favourite tunes and just vibing 🎶
October 25, 2025 at 5:14 PM
A story in 3 commits. Improving AI-generated texts are a bit of a hassle (changing models/prompts, re-running and re-evaluating)
October 18, 2025 at 9:34 PM
Probably not a good idea syncing programming projects to a cloud backup solution causing a messed up git tree and me losing hours of work. Well, also changing branch with —force in panic.

Will be fine backing up old things not version controlled in GitHub, but GitHub stuff shouldn’t be synced..
September 26, 2025 at 8:30 PM
From 20 seconds to 2 seconds (without cold start) 👌

Feel like I should write an article about this or something 😄
September 14, 2025 at 11:49 PM
I'm guessing this ain't great.. why Next.js cache memoization not working 🤔
September 13, 2025 at 7:24 PM
360 lint errors and warnings. Pray for me and/or my Cursor usage
August 18, 2025 at 6:16 PM
In case you didn’t know when you reach the Fluid compute limits on a hobby plan on Vercel your website is paused and you must upgrade to Pro to enable it again. Guess how I learned this
August 15, 2025 at 6:17 PM
When you’ve successfully isolated tests requiring a database by creating (and tearing down) a new database per test file, enabling you to fully parallelise them. Only for the performance in CI to now be worse than running the tests sequentially 🙈
May 25, 2025 at 7:01 AM
Fixed a bug which involved making database changes and data migrations with the help of AI in @fantasy-snooker.com this morning.

Really enjoying using AI at the moment. Instead of coding sometimes feeling like a chore I’m now looking forward to it
May 2, 2025 at 10:38 AM
I’m experiencing problems with emails sent to Hotmail/Outlook accounts being spam blocked by SendGrid. Anyone have suggestions to other email sender alternatives that is working for you?
April 24, 2025 at 8:30 AM
I wonder if we MCP all the things and give AI/LLMs our task lists is it possible to 0-inbox it (unlikely, but we can dream)
April 20, 2025 at 8:57 AM
Finally finished migrating a lifetime of notes from Google Keep to Notion..

- used github.com/djsudduth/ke... to export Google Keep notes to markdown files
- imported the zipped files to Notion
- write own script to parse dates and tags from page content to Notion props using the Notion API
GitHub - djsudduth/keep-it-markdown: Convert Google Keep notes dynamically to markdown for Obsidian, Logseq, Joplin and Notion using the unofficial Keep API. Also, import simple markdown notes back in...
Convert Google Keep notes dynamically to markdown for Obsidian, Logseq, Joplin and Notion using the unofficial Keep API. Also, import simple markdown notes back into Google Keep. - djsudduth/keep-i...
github.com
April 19, 2025 at 1:31 PM
I proposed a new eslint rule which would warn when you used type conversions like Number(foo) github.com/eslint/eslin.... The reasoning is that using these conversion methods opts out from type-checking. Any value can be passed to Number(foo).

Agree or naw? (the rule got rejected to core)
New Rule: no-explicit-coercion · Issue #19517 · eslint/eslint
Rule details Disallow explicit type conversions Related ECMAScript feature Core types What type of rule is this? Warns about a potential problem Example code const b = +foo; const b1 = Number(foo);...
github.com
March 16, 2025 at 9:13 AM
If I have to write one more <Suspense> I'll go insane...

🎵 Insane in the membrane 🎵
February 19, 2025 at 9:39 PM
Forever trapped in this. Can you even build your site with use cache? Honestly it seems like an error in `next build`, but if it's not then this error should be shown during dev because the `next build` -> try fix -> repeat workflow is atrocious #usecache @nextjs.org
February 19, 2025 at 8:11 PM
Bye bye hydration safe input component, no more need for them after React 19 👌
February 16, 2025 at 7:29 PM
Something therapeutic about fixing 300 lint errors/warnings
February 15, 2025 at 8:17 AM
Spending my Saturday exporting my data from an ancient cloud backup service in the most cumbersome way ever. What are you guys up to?
February 1, 2025 at 1:18 PM
Why is it so hard to find a backup service which is cheap, has good performance and lots of features, deduplication, encryption and a data center in Europe?

Please helpz
January 12, 2025 at 11:05 AM
It seems JSX is under the "react" module instead of global in React 19.

Which means if you do something like this to support custom elements (e.g. from a third-party lib) you must override the module "react" instead of global.

Also don't forget to import JSX from "react" where you referer to JSX.
December 17, 2024 at 7:54 AM
AI saves time but doesn’t replace real work
December 1, 2024 at 12:37 PM
The problem when giving feedback about an AI feature to a company is you get AI responses back 😩
November 27, 2024 at 9:08 PM