I raised the duration, it deployed, and I then discovered two new problems that were worse. Users with no visible progress clicked the button again and I got duplicate PDFs, and a proxy in front of us closed the connection well before the function finished anyway, so the work completed on the server and the browser saw a failure. If you do stay synchronous, disable the button through the pending state and stream something back so the connection has traffic on it.
Lu Farraday
@layer_shift_lu
I print functional parts in PETG and ASA for a small robotics club, so warping and layer adhesion are my daily problems. Slicer settings are my love language.
109 credit Trusted
- From answers
- 0
- From questions
- 111
- Lifetime
- 111
That's not what the key does, though. It changes which menu you get; it doesn't change what the shell has to load to build one. If your slow component is a legacy handler, the classic menu is precisely where all of those handlers live: so you'd trade "fast first menu, slow Show more options" for "one uniformly slow menu".
It genuinely does feel faster to a lot of people because it removes a click, and that's a perfectly good reason to want it. Just don't file it as a performance fix. Time the same folder before and after with a stopwatch and you'll see which one you actually changed.
Read the OAuth section of your Google Cloud console carefully, because there are two different walls and people mix them up.
If your consent screen is in Testing status, only emails on your test user list can authorise at all, and the refresh tokens you get are time limited - they expire after seven days. That one is vicious for a calendar product, because everything works, users are happy, and a week later every connection silently dies and they conclude your app is broken.
If you have published but not completed verification while requesting a sensitive scope, you get the unverified app interstitial and a cap of 100 users who can grant permission. Google's help documentation is explicit that this cap applies over the lifetime of the project and cannot be reset. Burn it on churned trial users and you are creating a new project and rewiring your client IDs.
So yes, start verification now, and know which of those two states you are actually in.
The who-else-tried-to-sell-you one is underrated. I asked it on my seventh call and got a name, a price and the reason they dropped it after two months. That single answer was worth the six calls before it.
True, and you would be paying continuously to hold mostly-idle sockets for an hour of traffic per month. The pooler costs nothing and fixes the shape of the problem rather than the size of it.
Write the mapper by hand and stop treating actions as "return the row". I keep a toInvoiceDTO(row) next to the action and a zod schema for the return type. The schema costs ten lines and gives you an actual contract, when someone adds a column with a weird type the parse fails in a test, not as a runtime warning in a browser someone else is using.
Check for duplicated content generally. If a paragraph is present in 200 pages, all 200 look alike to the index and one of them wins arbitrarily. A quick group-by on a hash of the chunk text usually turns up something ugly.
Seconding the comments part. Most of my traction came in hours three to eight, which is dead time in the US, purely because I was awake and answering every single comment with something specific rather than 'thanks so much!'. The generic replies get you nothing; a real answer about how the thing handles someone's exact case gets you a thread.
Six words that say what it is might genuinely be the problem. 'What it is' answers a question nobody asked. Try one line naming the situation the visitor is in, then the product name, then the button.
The test I use: read the headline out loud to someone who does the job. If they say 'yes, that's annoying' before you explain anything, it works. If they say 'what does it do', it doesn't.
The single stick thing is the one that gets people. Even on a discrete card some games notice, and if you ever fall back to integrated graphics it is brutal. Ask the seller for a photo of the inside before you buy, most of them will send one.
If you self-host this is worse than you think. Multiple containers behind a load balancer during a rolling deploy means some replicas are build A and some are build B, so you get this for as long as the rollout takes, and permanently if your build ids differ between replicas because each container built its own image.
Normalise gmail addresses, cap the unit that costs you money, degrade rather than block. Everything else is a weekend spent building a fraud team for a 40 problem.
Right in general, and yet when I ran it the two moved differently. People reaching the first real action roughly doubled, while verified-and-active stayed flat. Read that as: the wall was also filtering out real people who intended to come back and could not find the email. Both effects existed at once.
One downside nobody mentions until they are staring at a dashboard: every action shows up in your metrics as a POST to the page route, so all of them share one latency series. If you care, tag the span or log the action name yourself.
3.1s smells like disk. 820k x 1536 floats is around 5 GB of raw vectors before the index, on a 16 GB box that is also holding your normal working set. Check the buffer cache hit rate during a slow query, if you have fallen out of RAM, no index parameter will save you and the fix is either a bigger box or narrower vectors.
The fact that you can hear the problem two days later is the good part of this story. Plenty of people can't. Your ears are ahead of your workflow, which is a much easier gap to close.
Separate queries per relation is the default strategy, yes: it fetches parents, then children with an IN, and stitches them in JS. That is usually fine. What is not fine is the sequential scan.
Check for an index on items.post_id. Prisma creates the foreign key constraint but not an index on the referencing column, and Postgres does not create one for you either. An unindexed FK plus an IN list of 50 is exactly the 4-second shape you are describing.
Secondary: turn on the relation-join strategy if you want a single query with lateral joins, and stop using bare include in favour of select so you are not shipping every column of three tables to render a list.
Something I only realised after doing this: check what the new tier does to your existing customers. I added a higher plan and three people on my cheapest one emailed asking whether they were about to be downgraded. Nothing had changed for them at all, but the page looked different so they assumed the worst.
One line in a changelog email saying nothing changes for existing plans would have saved me three anxious replies and one near-cancellation.
Mono is underrated for this. A lot of 'too much bass in the car' is actually low end with phase problems that partially cancels on the monitors and doesn't in a car.
This is the answer I wish I had read first. Everyone frames it as whether it will explode, when the real failure mode is a stick of RAM that starts throwing errors in March.
I put 'use client' at the top of the root layout during a bad week because it made twenty errors disappear at once. Everything worked, and then the bundle roughly doubled, the first load got noticeably slower, and I had thrown away the entire reason for using this architecture. Unpicking it took longer than fixing the original twenty errors would have. Do not put the directive high up to silence errors, it silences the framework too.
Numbers, because day rate maths catches people out. A ten hour day realistically gets you setup and sounds for the first ninety minutes, then three songs done properly with a couple of alternates, maybe four if the band is drilled and the arrangements are locked. Not nine.
So you are either booking two or three days, or picking the three songs where the drums carry the track and programming the rest. We did the second and I would do it again. Also: turn up with the arrangements finalised and tempos decided. Every band that walks in still arguing about a bridge is buying an expensive rehearsal.
Add the tsvector as a generated column rather than maintaining it in application code, otherwise you get the classic bug where documents edited through one code path are searchable and documents edited through another are not. Index it GIN and forget about it.
Write the Friday update. Skipping it after a copycat shows up tells everyone reading that you were rattled by them, which is a worse signal than anything on your roadmap page.
Seconding the contingency. Also ask whether the county will let you test in the season you are in. Ours only does soils evaluations when the water table is high, which is a six week window in spring, and if you miss it you sit on the land for a year.