DEV Community

Daniel Pertu profile picture

Daniel Pertu

404 bio not found

Location London Joined Joined on  Personal website https://cogniprep.app

Work

Founder of CogniPrep

Electron says 'unspecified', Playwright wants 'Lax', and the session cookies vanished

Electron says 'unspecified', Playwright wants 'Lax', and the session cookies vanished

Comments
5 min read

Want to connect with Daniel Pertu?

Create an account to connect with Daniel Pertu. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
A 429 is not a no: the three answers our licence check has to tell apart

A 429 is not a no: the three answers our licence check has to tell apart

Comments
4 min read
Our 15 search limit is a latency budget, not a pricing tier

Our 15 search limit is a latency budget, not a pricing tier

Comments
4 min read
The consent checkbox we tick for you, and the one we never will

The consent checkbox we tick for you, and the one we never will

Comments
5 min read
€1450 per month is rent, €9.99 per month is a paywall, and one digit tells them apart

€1450 per month is rent, €9.99 per month is a paywall, and one digit tells them apart

Comments
5 min read
21 reply statuses, and the 8 that mean never touch this listing again

21 reply statuses, and the 8 that mean never touch this listing again

Comments
5 min read
Prices round up, discounts round down, and one package decides both

Prices round up, discounts round down, and one package decides both

Comments 1
6 min read
Rewriting a million rows when the only acceptable diff is zero bytes

Rewriting a million rows when the only acceptable diff is zero bytes

Comments
6 min read
135,692 label words in 49 languages, and not one model call in the path

135,692 label words in 49 languages, and not one model call in the path

Comments
6 min read
An ingredient nobody has looked at yet is not an ingredient that is fine

An ingredient nobody has looked at yet is not an ingredient that is fine

Comments
6 min read
Our web app is the phone app: 103 files, 14 web branches, one .web.tsx

Our web app is the phone app: 103 files, 14 web branches, one .web.tsx

Comments
5 min read
Zero img tags on our landing page, and four of the phones on it are app screens

Zero img tags on our landing page, and four of the phones on it are app screens

Comments
4 min read
A nightly Postgres backup for $0, and the four things that break it

A nightly Postgres backup for $0, and the four things that break it

Comments
4 min read
A two-column desktop layout that has to be byte-identical on mobile

A two-column desktop layout that has to be byte-identical on mobile

Comments
4 min read
An internal tool that edits entitlements has to write two records, not one

An internal tool that edits entitlements has to write two records, not one

Comments
4 min read
157 lines added, 1,849 deleted: what an anonymous path actually cost us

157 lines added, 1,849 deleted: what an anonymous path actually cost us

Comments
4 min read
A one-shot review prompt, and the timestamp that decides when to spend it

A one-shot review prompt, and the timestamp that decides when to spend it

Comments
4 min read
A signed permit that names the game, not the content it unlocks

A signed permit that names the game, not the content it unlocks

Comments
4 min read
We block first paint with an inline script on purpose, and the list inside it is generated

We block first paint with an inline script on purpose, and the list inside it is generated

Comments
4 min read
Our landing page for the weakest feature says the evidence is weak, because the page reads it from the engine

Our landing page for the weakest feature says the evidence is weak, because the page reads it from the engine

Comments
5 min read
One content registry, four consumers, and the RSS feed that inherited an editorial order

One content registry, four consumers, and the RSS feed that inherited an editorial order

Comments
4 min read
Your title template spends ten of your sixty characters, and nobody counts them

Your title template spends ten of your sixty characters, and nobody counts them

Comments
6 min read
One string is the page title, the h1 and the JSON-LD headline, which makes shortening it a content edit

One string is the page title, the h1 and the JSON-LD headline, which makes shortening it a content edit

Comments
4 min read
A data export needs a field explaining what is not in it

A data export needs a field explaining what is not in it

Comments
5 min read
libvpx-vp9 writes the alpha_mode tag and throws your alpha away

libvpx-vp9 writes the alpha_mode tag and throws your alpha away

Comments
5 min read
Three layers over one product, and only one of them is allowed to say no

Three layers over one product, and only one of them is allowed to say no

Comments
5 min read
Our ads are 28 React compositions, and the constraint is that any two must cut together

Our ads are 28 React compositions, and the constraint is that any two must cut together

Comments
6 min read
Two apps, two ways of knowing where you are, one price table

Two apps, two ways of knowing where you are, one price table

Comments
6 min read
Every thirty seconds it fails, and you should get one email, not 2,880

Every thirty seconds it fails, and you should get one email, not 2,880

Comments
6 min read
Our query timeout had to be set on the Postgres role, because the pooler throws away everything else

Our query timeout had to be set on the Postgres role, because the pooler throws away everything else

Comments
4 min read
We took zod out of our login page, and kept exactly one definition of a valid password

We took zod out of our login page, and kept exactly one definition of a valid password

Comments
4 min read
Scanning the same pack twice in one aisle is one entry, not two

Scanning the same pack twice in one aisle is one entry, not two

Comments
5 min read
Four places state lives in our Electron app, sorted by when it is allowed to die

Four places state lives in our Electron app, sorted by when it is allowed to die

Comments
6 min read
autofocus='off' is the one that keeps focusing, and two other reasons our label photos were blurry

autofocus='off' is the one that keeps focusing, and two other reasons our label photos were blurry

Comments
6 min read
More JavaScript arrives after our landing page loads than before it

More JavaScript arrives after our landing page loads than before it

Comments
4 min read
The first check after a restart is not allowed to tell you anything

The first check after a restart is not allowed to tell you anything

Comments
5 min read
Same document, two URL spaces, because intent is not content

Same document, two URL spaces, because intent is not content

Comments
6 min read
The price in our structured data comes from the constant Stripe charges

The price in our structured data comes from the constant Stripe charges

Comments
6 min read
Our support inbox is a webhook, and two angle brackets were breaking the images

Our support inbox is a webhook, and two angle brackets were breaking the images

Comments
6 min read
Two products, one Stripe event, and the branch that must come first

Two products, one Stripe event, and the branch that must come first

Comments
6 min read
A student house is one IP address, so our rate limit counts licences

A student house is one IP address, so our rate limit counts licences

Comments 1
6 min read
When a block clears, only one search goes back in

When a block clears, only one search goes back in

Comments
5 min read
The only cross-origin browser caller of our API is our own app

The only cross-origin browser caller of our API is our own app

Comments
6 min read
Two keys per endpoint, and the decision to fail open is made route by route

Two keys per endpoint, and the decision to fail open is made route by route

Comments
6 min read
A date is prose, a version is a key: five systems read our terms version

A date is prose, a version is a key: five systems read our terms version

Comments
5 min read
A client-sent confidence score is not evidence, so our OCR route signs for its own work

A client-sent confidence score is not evidence, so our OCR route signs for its own work

Comments
5 min read
Curation reaches the phone without an app release, and the version is just max(updated_at)

Curation reaches the phone without an app release, and the version is just max(updated_at)

Comments
6 min read
Every number on our recipe pages is derived, because a second copy would drift

Every number on our recipe pages is derived, because a second copy would drift

Comments
6 min read
93 of the 199 questions in our FAQ markup are not on the page

93 of the 199 questions in our FAQ markup are not on the page

Comments
4 min read
A link is not a link until you have read its rel attribute

A link is not a link until you have read its rel attribute

Comments
5 min read
Our force flag did strictly less work than not passing it

Our force flag did strictly less work than not passing it

Comments
5 min read
Search Console said position 7.4, the live search result said nowhere

Search Console said position 7.4, the live search result said nowhere

Comments
4 min read
Google found 28 of our pages and indexed none of them

Google found 28 of our pages and indexed none of them

Comments
4 min read
Our SEO copy was sr-only and aria-hidden, so nobody could read it

Our SEO copy was sr-only and aria-hidden, so nobody could read it

Comments
5 min read
Two DMGs, because a universal build would ship two Chromiums

Two DMGs, because a universal build would ship two Chromiums

Comments
7 min read
A settings file with one field left, and a migration that only deletes

A settings file with one field left, and a migration that only deletes

Comments
6 min read
A hook whose return value nobody uses

A hook whose return value nobody uses

Comments
5 min read
The app found the listing, and then had nothing to show you

The app found the listing, and then had nothing to show you

Comments
6 min read
A 200 from IndexNow does not mean it read your key

A 200 from IndexNow does not mean it read your key

Comments
7 min read
fs.cpSync copied the framework and left every symlink pointing at the cache

fs.cpSync copied the framework and left every symlink pointing at the cache

Comments
5 min read
loading...