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

Our 266 tests have never run anywhere but this laptop, and I found out two of them are red by running them

Our 266 tests have never run anywhere but this laptop, and I found out two of them are red by running them

1
Comments
4 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
Two of our pages answer DELETE with the whole page, the other 70 answer 405, and we never wrote a line about HTTP methods

Two of our pages answer DELETE with the whole page, the other 70 answer 405, and we never wrote a line about HTTP methods

Comments
5 min read
With JavaScript off our dark site renders white, and there is no noscript tag on any of its 72 pages

With JavaScript off our dark site renders white, and there is no noscript tag on any of its 72 pages

1
Comments
5 min read
94 page files, zero dynamic routes, and 67 pages that write their own URL twice with nothing checking the folder

94 page files, zero dynamic routes, and 67 pages that write their own URL twice with nothing checking the folder

Comments
4 min read
635 paragraphs on our site cannot contain a link, because the page body is data and not JSX

635 paragraphs on our site cannot contain a link, because the page body is data and not JSX

Comments 1
4 min read
13.3 per cent of our HTML is class attributes, 324 distinct strings doing it, and the proof tailwind-merge works is a class that is missing

13.3 per cent of our HTML is class attributes, 324 distinct strings doing it, and the proof tailwind-merge works is a class that is missing

Comments
5 min read
All 516 of our pages have exactly one h1, no skip link, and skip a heading level in exactly the same place

All 516 of our pages have exactly one h1, no skip link, and skip a heading level in exactly the same place

Comments
5 min read
Our updater is the download page, and the one string that stops a reinstall wiping your licence is productName

Our updater is the download page, and the one string that stops a reinstall wiping your licence is productName

Comments
7 min read
Eight entries in one content array, 1,041 to 2,034 words each, and the optional field that has exactly one user

Eight entries in one content array, 1,041 to 2,034 words each, and the optional field that has exactly one user

Comments
4 min read
56 pages that answer the same question, 12 to 21 percent shared text, and three of them collect every related link

56 pages that answer the same question, 12 to 21 percent shared text, and three of them collect every related link

Comments
5 min read
Two of our pages are 1,065 and 1,083 words long, and the reading times under their titles say 6 minutes and 8 minutes

Two of our pages are 1,065 and 1,083 words long, and the reading times under their titles say 6 minutes and 8 minutes

Comments
6 min read
Our only patched dependency spells its version in four places by hand, and the install checks three of them

Our only patched dependency spells its version in four places by hand, and the install checks three of them

Comments
4 min read
Half of our revalidatePath calls name a layout, and a streaming campaign header is the reason

Half of our revalidatePath calls name a layout, and a streaming campaign header is the reason

Comments
6 min read
47 of our 516 pages carry the same Organization node twice, and the fix is deleting one argument

47 of our 516 pages carry the same Organization node twice, and the fix is deleting one argument

Comments
5 min read
Our desktop app has to tell us which price it showed, and a build that cannot is charged £20 instead of €24.99

Our desktop app has to tell us which price it showed, and a build that cannot is charged £20 instead of €24.99

Comments
7 min read
Seventeen words for eight database values, and a dot that only pulses when work is actually running

Seventeen words for eight database values, and a dot that only pulses when work is actually running

Comments
6 min read
Our homepage serves 24 logo elements for 12 logo files, and four more files nobody has ever requested

Our homepage serves 24 logo elements for 12 logo files, and four more files nobody has ever requested

Comments
4 min read
Five things an operator can do to somebody else's account, and the audit row names the account rather than the operator

Five things an operator can do to somebody else's account, and the audit row names the account rather than the operator

Comments
6 min read
A 436-word static page on our site downloads 263 KB of JavaScript, and a quarter of it is a realtime client we never open

A 436-word static page on our site downloads 263 KB of JavaScript, and a quarter of it is a realtime client we never open

Comments
4 min read
We drop DMARC reports by looking for "dmarc" in the subject, and the spec's own subject line does not contain the word

We drop DMARC reports by looking for "dmarc" in the subject, and the spec's own subject line does not contain the word

Comments
6 min read
69 of our 99 articles point at the same one, and 28 of them are never pointed at by anything

69 of our 99 articles point at the same one, and 28 of them are never pointed at by anything

Comments
4 min read
The home screen of our app stores nothing about itself, and two of its panels can delete themselves

The home screen of our app stores nothing about itself, and two of its panels can delete themselves

Comments
5 min read
Every page on our site but one is styled by a class called legal, and three of them are legal pages

Every page on our site but one is styled by a class called legal, and three of them are legal pages

Comments
5 min read
Nine places in our app answer "you are here", and they do it with four different values of aria-current

Nine places in our app answer "you are here", and they do it with four different values of aria-current

Comments
5 min read
Our two self-hosted fonts hold 222 and 230 codepoints, and the arrow on our homepage is in neither

Our two self-hosted fonts hold 222 and 230 codepoints, and the arrow on our homepage is in neither

Comments
6 min read
Four ways to pick a date locale in one app, and only the newest one asks the data

Four ways to pick a date locale in one app, and only the newest one asks the data

Comments
5 min read
Nineteen route handlers, nine ways of proving who you are, and six answers for a stranger

Nineteen route handlers, nine ways of proving who you are, and six answers for a stranger

Comments
6 min read
Ten Server Actions, five form elements, and the hook argument two of them are handed by hand

Ten Server Actions, five form elements, and the hook argument two of them are handed by hand

Comments
4 min read
Two options on our desktop notification name three platforms between them, and not one of them is macOS

Two options on our desktop notification name three platforms between them, and not one of them is macOS

Comments
5 min read
We wrote force-dynamic 81 times, and the one route that forgot it behaves identically

We wrote force-dynamic 81 times, and the one route that forgot it behaves identically

Comments
5 min read
Our app has 601 serverless invocations a day and exactly one background task, and the task gets 1,800 seconds

Our app has 601 serverless invocations a day and exactly one background task, and the task gets 1,800 seconds

Comments
6 min read
Our maintenance mode is one boolean in a TypeScript file, and it taught us that our sign-in pages are not public

Our maintenance mode is one boolean in a TypeScript file, and it taught us that our sign-in pages are not public

Comments
6 min read
The biggest delete in our app is one line of raw SQL against a table our ORM does not manage

The biggest delete in our app is one line of raw SQL against a table our ORM does not manage

Comments
6 min read
Nineteen pages behind our login, nineteen loading.tsx files, and 159 uses of a component called Bone

Nineteen pages behind our login, nineteen loading.tsx files, and 159 uses of a component called Bone

Comments
6 min read
Our 32 migrations are 36 KB of SQL, and the folder they live in holds 2.4 MB of JSON

Our 32 migrations are 36 KB of SQL, and the folder they live in holds 2.4 MB of JSON

Comments
6 min read
Five functions decide who may read a row in our app, and the answer for somebody else's row is 404

Five functions decide who may read a row in our app, and the answer for somebody else's row is 404

Comments
7 min read
Our copy audit read 56,462 words and found no exclamation marks. The 161 strings it could not see have two.

Our copy audit read 56,462 words and found no exclamation marks. The 161 strings it could not see have two.

Comments
6 min read
We write one sentence per page, and the page ships it ten times

We write one sentence per page, and the page ships it ten times

Comments
6 min read
Our example env file documents 19 variables, the code reads 15 of them, and its longest comment describes a design we deleted

Our example env file documents 19 variables, the code reads 15 of them, and its longest comment describes a design we deleted

Comments
6 min read
Our test suite has no DOM: 266 tests in 603 milliseconds, and the two components it checks are rendered to a string

Our test suite has no DOM: 266 tests in 603 milliseconds, and the two components it checks are rendered to a string

Comments
6 min read
Our pages have been in the edge cache for twelve days, and the browser is told to cache them for zero seconds

Our pages have been in the edge cache for twelve days, and the browser is told to cache them for zero seconds

Comments
6 min read
One capital letter turns /pricing into a login form, and /Sitemap.xml into a 404

One capital letter turns /pricing into a login form, and /Sitemap.xml into a 404

Comments
7 min read
The only string in our alert email that nobody on our side wrote, and the four characters standing in front of it

The only string in our alert email that nobody on our side wrote, and the four characters standing in front of it

Comments
6 min read
49 rows in our comparison tables, 13 of them say the competitor wins, and the marker is a hex colour

49 rows in our comparison tables, 13 of them say the competitor wins, and the marker is a hex colour

Comments
7 min read
One installer filename lives in three files, and the version number lives in a header nothing reads

One installer filename lives in three files, and the version number lives in a header nothing reads

Comments
6 min read
Fifteen site pages, 45 hand-written links between them, and the one page nothing points at

Fifteen site pages, 45 hand-written links between them, and the one page nothing points at

Comments
6 min read
Three of our 24 currencies are written without decimals, and Stripe agrees about one of them

Three of our 24 currencies are written without decimals, and Stripe agrees about one of them

Comments 1
7 min read
Our copy rule bans the em dash, and 16 of them survived it as HTML entities

Our copy rule bans the em dash, and 16 of them survived it as HTML entities

Comments
5 min read
Four regions, three flags, and a no-emoji rule that cannot see a single one of them

Four regions, three flags, and a no-emoji rule that cannot see a single one of them

Comments
7 min read
Twelve links chosen alphabetically on all 461 of our generated pages, and the 128 pages nothing else points to

Twelve links chosen alphabetically on all 461 of our generated pages, and the 128 pages nothing else points to

Comments
6 min read
Our workspace runs 1,129 tests and the app people actually hold has 67 of them

Our workspace runs 1,129 tests and the app people actually hold has 67 of them

Comments
7 min read
49 Pressables, 36 accessibility roles, and the two controls in our app a screen reader does not mention at all

49 Pressables, 36 accessibility roles, and the two controls in our app a screen reader does not mention at all

Comments
7 min read
Every string in our app goes through one component, and iOS is allowed to multiply it by 3.571

Every string in our app goes through one component, and iOS is allowed to multiply it by 3.571

Comments
6 min read
pnpm 11 holds a new release for 24 hours, and the nine waivers in our workspace file were written by pnpm, not by me

pnpm 11 holds a new release for 24 hours, and the nine waivers in our workspace file were written by pnpm, not by me

Comments
6 min read
369 of our 375 pages carry a meta keywords tag, 84 KB of it, for a tag Google stopped reading in 2009

369 of our 375 pages carry a meta keywords tag, 84 KB of it, for a tag Google stopped reading in 2009

Comments
4 min read
Our prep plan has no done button, because a checkbox would be a second opinion about what you practised

Our prep plan has no done button, because a checkbox would be a second opinion about what you practised

Comments
5 min read
Two sector taxonomies, 20 ids against 4, and the one word they share means the opposite thing in each

Two sector taxonomies, 20 ids against 4, and the one word they share means the opposite thing in each

Comments
5 min read
Five of our colour tokens were never registered as colours, so eight classes using them match nothing in the stylesheet

Five of our colour tokens were never registered as colours, so eight classes using them match nothing in the stylesheet

Comments
4 min read
Every read time on our blog is a word count divided by 200, and the word count is a number somebody typed

Every read time on our blog is a word count divided by 200, and the word count is a number somebody typed

Comments
4 min read
Deleting one user row empties 21 of our 29 tables, and the delete statement names one of them

Deleting one user row empties 21 of our 29 tables, and the delete statement names one of them

1
Comments 1
5 min read
loading...