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 app says: the site didn't say, so we assumed. Then it rings the field each assumption is about

Our app says: the site didn't say, so we assumed. Then it rings the field each assumption is about

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
Our setup wizard keeps the step in the URL and the answers nowhere, so Back works and a reload starts over

Our setup wizard keeps the step in the URL and the answers nowhere, so Back works and a reload starts over

Comments
5 min read
Two emails about a new campaign, and whichever one goes first cancels the other for good

Two emails about a new campaign, and whichever one goes first cancels the other for good

Comments
5 min read
A paid source ran out of credit and our own code hid it from us for nine days

A paid source ran out of credit and our own code hid it from us for nine days

Comments
5 min read
We import 53 icons from one library, and six of them ever reach a public page

We import 53 icons from one library, and six of them ever reach a public page

Comments
5 min read
Seven useMemo calls in 72,683 lines, six of them in one file, and the one that matters is not about speed

Seven useMemo calls in 72,683 lines, six of them in one file, and the one that matters is not about speed

Comments
5 min read
I blocked our own stylesheet on a live page, and the only thing our site lost was the design

I blocked our own stylesheet on a live page, and the only thing our site lost was the design

Comments
4 min read
Thirty-two controls on our free tools, and not one of them is in the URL

Thirty-two controls on our free tools, and not one of them is in the URL

Comments
3 min read
Offline, one of our free tools blames your web address and the other says nothing at all

Offline, one of our free tools blames your web address and the other says nothing at all

Comments
4 min read
A page of ours with nothing to click carries 253 event listeners, and 151 of them are on document

A page of ours with nothing to click carries 253 event listeners, and 151 of them are on document

Comments
4 min read
Half the JavaScript on our static FAQ page never runs, and 98 KB of it is the framework's server code

Half the JavaScript on our static FAQ page never runs, and 98 KB of it is the framework's server code

Comments
4 min read
748 of the 1,250 rules in our stylesheet match nothing on any public page

748 of the 1,250 rules in our stylesheet match nothing on any public page

Comments
5 min read
An empty event handler is the only reason our app stays in the tray, and showing the window rebuilds the entire UI

An empty event handler is the only reason our app stays in the tray, and showing the window rebuilds the entire UI

Comments
6 min read
Four caps on our local data, three different units, and the one directory with no cap is the only one measured in megabytes

Four caps on our local data, three different units, and the one directory with no cap is the only one measured in megabytes

Comments
6 min read
Our crash screen points at a log file that has never seen a poll, and the log you can read clears itself back

Our crash screen points at a log file that has never seen a poll, and the log you can read clears itself back

Comments
5 min read
92 hex colours in our emails, eight distinct greys, and not one line telling the client it is a dark email

92 hex colours in our emails, eight distinct greys, and not one line telling the client it is a dark email

Comments
5 min read
Our /for pages have no index, and the breadcrumb working around it is a ternary with two identical branches

Our /for pages have no index, and the breadcrumb working around it is a ternary with two identical branches

Comments
6 min read
Our article type says keep the reading time honest, and all eight of our pages overstate it

Our article type says keep the reading time honest, and all eight of our pages overstate it

Comments
5 min read
Three surfaces have to look like the same app, two import the tokens, and the third types 18 hex codes

Three surfaces have to look like the same app, two import the tokens, and the third types 18 hex codes

1
Comments
5 min read
Every clip our video package renders keeps its alpha channel, and the five-line config is the smallest part of that

Every clip our video package renders keeps its alpha channel, and the five-line config is the smallest part of that

1
Comments
5 min read
Our Expo web build animates its own navigation in 196 lines, and half of them are not about animation

Our Expo web build animates its own navigation in 196 lines, and half of them are not about animation

1
Comments
5 min read
Twenty route files in our Expo app, three places that check for a login, and the deep link that is why

Twenty route files in our Expo app, three places that check for a login, and the deep link that is why

1
Comments
5 min read
Alert.alert is a no-op on the web, so six confirm buttons in our app did nothing

Alert.alert is a no-op on the web, so six confirm buttons in our app did nothing

1
Comments
5 min read
Our newest page adds one URL and 88 links, and nobody typed the list on it

Our newest page adds one URL and 88 links, and nobody typed the list on it

1
Comments
6 min read
Our newest hub page names 57 of our own games and links to none of them

Our newest hub page names 57 of our own games and links to none of them

1
Comments
4 min read
My link checker said six of our citations were dead. All six were my HTTP client.

My link checker said six of our citations were dead. All six were my HTTP client.

1
Comments
4 min read
One of our nine cached queries has exactly one caller: the function whose only job is to warm its cache

One of our nine cached queries has exactly one caller: the function whose only job is to warm its cache

Comments
4 min read
Four byte-identical copies of the same argv parser, and the dry-run habit that only our two newest scripts have

Four byte-identical copies of the same argv parser, and the dry-run habit that only our two newest scripts have

1
Comments
4 min read
I crawled all 530 of our own pages: no orphans, but 19 have exactly one way in

I crawled all 530 of our own pages: no orphans, but 19 have exactly one way in

Comments
4 min read
Every page we serve advertises an RSS feed our own robots.txt forbids

Every page we serve advertises an RSS feed our own robots.txt forbids

Comments 1
4 min read
6,308 comment lines in 72,683, zero TODOs, and the 26-line comment above a single boolean

6,308 comment lines in 72,683, zero TODOs, and the 26-line comment above a single boolean

Comments
6 min read
Five reads in our app write to the database, and one of them fetches a logo off the open web after the response has been sent

Five reads in our app write to the database, and one of them fetches a logo off the open web after the response has been sent

Comments
7 min read
J and K are the only keyboard shortcuts in our whole app, and the only two focus() calls are a heading and a panel

J and K are the only keyboard shortcuts in our whole app, and the only two focus() calls are a heading and a panel

Comments
7 min read
Deleting an account in our app is one line of SQL, and the audit row has to be written before it runs

Deleting an account in our app is one line of SQL, and the audit row has to be written before it runs

Comments
6 min read
318 columns, 147 of them nullable, and not one column in the schema that is both nullable and defaulted

318 columns, 147 of them nullable, and not one column in the schema that is both nullable and defaulted

Comments
6 min read
Thirty runtime dependencies, nine of them imported in exactly one file, and four that never appear in an import at all

Thirty runtime dependencies, nine of them imported in exactly one file, and four that never appear in an import at all

Comments
7 min read
Six inputs on our four public forms, zero autocomplete attributes, and the only one in the app says off

Six inputs on our four public forms, zero autocomplete attributes, and the only one in the app says off

Comments
5 min read
I wrote that this app has no dynamic routes. It has four, two of them since June, and the grep takes one second

I wrote that this app has no dynamic routes. It has four, two of them since June, and the grep takes one second

Comments
5 min read
The one page in our app that refreshes itself does it by re-rendering the server, in 68 lines

The one page in our app that refreshes itself does it by re-rendering the server, in 68 lines

Comments
5 min read
Our database schema is declared twice in one repo, and all 126 differing lines are comments

Our database schema is declared twice in one repo, and all 126 differing lines are comments

Comments
5 min read
One boolean column with DEFAULT true, and the paragraph of privacy policy it cost

One boolean column with DEFAULT true, and the paragraph of privacy policy it cost

Comments
5 min read
Our auth emails ignore the request that asked for them, and that is the entire security property

Our auth emails ignore the request that asked for them, and that is the entire security property

Comments
5 min read
The only security header our site sends is HSTS, and 74 of our 76 pages tell any origin it may read them

The only security header our site sends is HSTS, and 74 of our 76 pages tell any origin it may read them

Comments
5 min read
We refuse 121,969 email domains at sign-up, and 2.4 MB of them never reach the browser

We refuse 121,969 email domains at sign-up, and 2.4 MB of them never reach the browser

Comments
6 min read
One screen in our app has eight empty states, and four of them are the same emptiness for four different reasons

One screen in our app has eight empty states, and four of them are the same emptiness for four different reasons

Comments
6 min read
Our getting-started checklist stores no progress, and three of its five steps are asking about different campaigns

Our getting-started checklist stores no progress, and three of its five steps are asking about different campaigns

Comments
5 min read
Our three clock components return null on the server on purpose, and one of the three has no importers

Our three clock components return null on the server on purpose, and one of the three has no importers

Comments
5 min read
Five notes tour the big card on our homepage, and two of the four places a note can sit have never rendered

Five notes tour the big card on our homepage, and two of the four places a note can sit have never rendered

Comments
6 min read
We honour reduced motion in JavaScript and ignore it in CSS, and the three elements that prove it are all on the homepage

We honour reduced motion in JavaScript and ignore it in CSS, and the three elements that prove it are all on the homepage

Comments
5 min read
Thirty-two JavaScript files serve all 79 pages of our site, and two of them are the same 93,022 bytes of animation library under different names

Thirty-two JavaScript files serve all 79 pages of our site, and two of them are the same 93,022 bytes of animation library under different names

Comments
5 min read
Our marketing homepage ships two canvas elements, and the animation loop they run stops itself when there is nothing to draw

Our marketing homepage ships two canvas elements, and the animation loop they run stops itself when there is nothing to draw

Comments
8 min read
A directory in our repo lived for one hour and fifty-four minutes, and took the stylesheet's only reduced-motion rule with it when it went

A directory in our repo lived for one hour and fifty-four minutes, and took the stylesheet's only reduced-motion rule with it when it went

Comments
6 min read
We added seven pages, and six older ones now serve a link they say they have not been edited since September

We added seven pages, and six older ones now serve a link they say they have not been edited since September

Comments
6 min read
Four mascots share one 397-line parts file, and five pints are sitting in our homepage markup

Four mascots share one 397-line parts file, and five pints are sitting in our homepage markup

Comments 1
8 min read
Four surfaces carry one find, and exactly one of them has a switch

Four surfaces carry one find, and exactly one of them has a switch

Comments
6 min read
Five of our eight delete routes delete something you did not ask them to

Five of our eight delete routes delete something you did not ask them to

Comments
5 min read
61% of our HTML is inside script tags. Then I compressed it and found the real bill.

61% of our HTML is inside script tags. Then I compressed it and found the real bill.

Comments
6 min read
Our page template is not allowed to write prose. I diffed all 15 generated pages and found six sentences it writes.

Our page template is not allowed to write prose. I diffed all 15 generated pages and found six sentences it writes.

Comments
6 min read
I counted every internal link on our 38 page site. 64% of them are the footer.

I counted every internal link on our 38 page site. 64% of them are the footer.

Comments
6 min read
I said our typed pages could not promise unlimited searches. Thirteen of them do.

I said our typed pages could not promise unlimited searches. Thirteen of them do.

Comments
7 min read
loading...