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

Nine indexes on one queue table, five of them partial, three of them on a jsonb path

Nine indexes on one queue table, five of them partial, three of them on a jsonb path

Comments
6 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 design system is a markdown table of nineteen motifs, and the useful column is the one that says no

Our design system is a markdown table of nineteen motifs, and the useful column is the one that says no

Comments
6 min read
Eighteen useState calls in one help panel, and the key prop that throws them all away

Eighteen useState calls in one help panel, and the key prop that throws them all away

1
Comments
6 min read
Four form components hold every form in our app, and writing this post found the one bug in them

Four form components hold every form in our app, and writing this post found the one bug in them

Comments
6 min read
Our welcome card prints a five digit permit number that cannot tell you how many users we have

Our welcome card prints a five digit permit number that cannot tell you how many users we have

Comments
5 min read
Our terms notice has no Agree button, because carrying on is the acceptance

Our terms notice has no Agree button, because carrying on is the acceptance

Comments 1
5 min read
A feature shipped as 21 files of prose, and the word "five" had to survive in five other sentences

A feature shipped as 21 files of prose, and the word "five" had to survive in five other sentences

Comments
7 min read
I wrote that the fix was not a deletion. Eight days later it was, and the old URL now answers 200

I wrote that the fix was not a deletion. Eight days later it was, and the old URL now answers 200

Comments
5 min read
I told readers to curl our pricing endpoint, and seventeen days later it answers 404

I told readers to curl our pricing endpoint, and seventeen days later it answers 404

1
Comments
5 min read
Our plan change cancelled your old subscription first, so closing the Checkout tab left you on nothing

Our plan change cancelled your old subscription first, so closing the Checkout tab left you on nothing

1
Comments
6 min read
Two features both wanted to pick the currency, so one of them is switched off in code

Two features both wanted to pick the currency, so one of them is switched off in code

1
Comments
6 min read
There are no Prices in our Stripe Dashboard, only 24 rates in a table

There are no Prices in our Stripe Dashboard, only 24 rates in a table

1
Comments
6 min read
A search in our app has three identities, and the one we send over HTTP is the one that moves

A search in our app has three identities, and the one we send over HTTP is the one that moves

1
Comments
7 min read
Two version numbers in our settings file, and no code reads either of them

Two version numbers in our settings file, and no code reads either of them

1
Comments
6 min read
Our window reloads every time you open it, so our event stream opens with 203 frames

Our window reloads every time you open it, so our event stream opens with 203 frames

1
Comments
7 min read
Three clocks in one window at 1s, 5s and 30s, and not one component uses what the hook returns

Three clocks in one window at 1s, 5s and 30s, and not one component uses what the hook returns

Comments
6 min read
Three download buttons, no user agent sniffing, and a link that stops working 60 seconds after you click it

Three download buttons, no user agent sniffing, and a link that stops working 60 seconds after you click it

Comments
6 min read
Our activation code bans I and O, and the prefix in front of it is NTFIO

Our activation code bans I and O, and the prefix in front of it is NTFIO

Comments
6 min read
Our Button has 696 call sites, and four of our five busiest public pages contain no button element at all

Our Button has 696 call sites, and four of our five busiest public pages contain no button element at all

Comments
5 min read
The obvious SEO move was eight recipe collection pages, and 37 of our 38 recipes suit low FODMAP, so we built none of them

The obvious SEO move was eight recipe collection pages, and 37 of our 38 recipes suit low FODMAP, so we built none of them

Comments
4 min read
The one careful sentence on our reference page is not written in the page, it is read off the product at build time

The one careful sentence on our reference page is not written in the page, it is read off the product at build time

Comments
5 min read
Five URLs our test suite demands we never publish, and the two ways a published page can vanish with the build still green

Five URLs our test suite demands we never publish, and the two ways a published page can vanish with the build still green

Comments
5 min read
375 URLs in our sitemap come from seven sources, and the 132 biggest are found by reading a directory off disk

375 URLs in our sitemap come from seven sources, and the 132 biggest are found by reading a directory off disk

Comments
5 min read
Ticking a condition in our app switches on an allergy, and unticking the condition does not switch the allergy off

Ticking a condition in our app switches on an allergy, and unticking the condition does not switch the allergy off

Comments
5 min read
Twenty lines of our copy spell out eight conditions, and the one that still says seven is the description Google shows

Twenty lines of our copy spell out eight conditions, and the one that still says seven is the description Google shows

Comments
4 min read
Our cookie policy names four cookies and three storage keys, and I counted what a browser really holds after one visit

Our cookie policy names four cookies and three storage keys, and I counted what a browser really holds after one visit

1
Comments 1
5 min read
Our sitemap is 516 URLs and not one of them comes from the database any more

Our sitemap is 516 URLs and not one of them comes from the database any more

Comments
4 min read
Our icon package is 90 MB of node_modules, and I measured exactly which ten of its 5,478 icons reach the homepage

Our icon package is 90 MB of node_modules, and I measured exactly which ten of its 5,478 icons reach the homepage

Comments
5 min read
Our Sentry config sets one option the SDK has deleted and two more under a key whose own type says it has no effect

Our Sentry config sets one option the SDK has deleted and two more under a key whose own type says it has no effect

Comments
5 min read
Three font files preload on every page of our site, and on five of the six I measured one of them has nothing to render

Three font files preload on every page of our site, and on five of the six I measured one of them has nothing to render

Comments
5 min read
Twelve try blocks in our renderer, ten of them wrap new URL, and the fetch wrapper everything else trusts has none

Twelve try blocks in our renderer, ten of them wrap new URL, and the fetch wrapper everything else trusts has none

1
Comments
6 min read
Four ways our code avoids importing Electron, and the one file that imports it at the top and takes ten others with it

Four ways our code avoids importing Electron, and the one file that imports it at the top and takes ten others with it

1
Comments
6 min read
Four full reads of a 4 MB text file to decide one listing, on the thread that serves our UI

Four full reads of a 4 MB text file to decide one listing, on the thread that serves our UI

1
Comments
6 min read
Our only GitHub Actions workflow is a database backup, and 7,715 tests run on one laptop

Our only GitHub Actions workflow is a database backup, and 7,715 tests run on one laptop

1
Comments
4 min read
One page asks for 108 image URLs, every one says max-age=0, and the only thing we cache in a browser is four logos

One page asks for 108 image URLs, every one says max-age=0, and the only thing we cache in a browser is four logos

Comments
4 min read
One line removes our app menu, and on macOS that is also the line that removes Cmd+V

One line removes our app menu, and on macOS that is also the line that removes Cmd+V

Comments
5 min read
Our tsconfig says target ES2017, and the JavaScript we ship to browsers contains ??=

Our tsconfig says target ES2017, and the JavaScript we ship to browsers contains ??=

1
Comments
3 min read
The page headed "Accept your invite" has a Google button that makes accepting the invite impossible

The page headed "Accept your invite" has a Google button that makes accepting the invite impossible

1
Comments
4 min read
A webmanifest cannot read a CSS variable, so our brand colour is spelled twice: once as OKLCH and once as hex

A webmanifest cannot read a CSS variable, so our brand colour is spelled twice: once as OKLCH and once as hex

1
Comments
7 min read
Our window decides a link is ours with a string prefix, and the string that beats it has an @ in it

Our window decides a link is ours with a string prefix, and the string that beats it has an @ in it

1
Comments
5 min read
We have a folder called repositories, and 31 files that query the database without going near it

We have a folder called repositories, and 31 files that query the database without going near it

1
Comments
4 min read
The only free text a stranger can write into our catalogue is a product name, and the isNull in the WHERE is the whole concurrency story

The only free text a stranger can write into our catalogue is a product name, and the isNull in the WHERE is the whole concurrency story

1
Comments
5 min read
Our proxy writes down where you were going on every bounce to the login form, and the login form has never read it

Our proxy writes down where you were going on every bounce to the login form, and the login form has never read it

1
Comments
4 min read
Our proposal screen arrives already written, and every part of it has a Change button instead of an empty field

Our proposal screen arrives already written, and every part of it has a Change button instead of an empty field

Comments
9 min read
Our migration folder has 51 numbers, 50 files, 49 snapshots, and 289 lines of SQL the tool will never touch

Our migration folder has 51 numbers, 50 files, 49 snapshots, and 289 lines of SQL the tool will never touch

Comments
5 min read
Our lock lived for three hours, our schedule fired every fifteen minutes, and every one of those skipped runs was recorded as a success

Our lock lived for three hours, our schedule fired every fifteen minutes, and every one of those skipped runs was recorded as a success

Comments 1
5 min read
Fifteen pages, 45 sibling links, and the one page no sibling links to

Fifteen pages, 45 sibling links, and the one page no sibling links to

Comments
6 min read
strict is not strict: I turned on all nine flags our tsconfig leaves off, and counted

strict is not strict: I turned on all nine flags our tsconfig leaves off, and counted

Comments
4 min read
Shipping a reminder email must not remind everyone who signed up before it existed, so ours has a seven day cutoff

Shipping a reminder email must not remind everyone who signed up before it existed, so ours has a seven day cutoff

Comments
8 min read
One picker for seven conditions and fourteen allergies, and its hardest rule is that nothing you selected may hide

One picker for seven conditions and fourteen allergies, and its hardest rule is that nothing you selected may hide

Comments
4 min read
Our Checkout sends the buyer and the quitter to the same URL, and the thank-you page we wrote is reachable by nobody

Our Checkout sends the buyer and the quitter to the same URL, and the thank-you page we wrote is reachable by nobody

Comments
4 min read
Our 404 is a field guide entry for a bird that was never recorded, and our error boundary is not allowed to be funny

Our 404 is a field guide entry for a bird that was never recorded, and our error boundary is not allowed to be funny

Comments
7 min read
Our settlement job and our checkout webhook can reach for the same reward row, and the one that proceeds is whoever gets it back from an UPDATE

Our settlement job and our checkout webhook can reach for the same reward row, and the one that proceeds is whoever gets it back from an UPDATE

Comments
5 min read
Our device cap is written only by the Stripe webhook, so the one plan with a cap of 2 is the one nobody can reach

Our device cap is written only by the Stripe webhook, so the one plan with a cap of 2 is the one nobody can reach

Comments
5 min read
Intl and Stripe disagree about three of the currencies we sell in, and 450000 is how you charge 4,500 forint

Intl and Stripe disagree about three of the currencies we sell in, and 450000 is how you charge 4,500 forint

Comments
5 min read
Our robots.txt names eleven AI crawlers and then repeats the whole policy, because a crawler only obeys one group

Our robots.txt names eleven AI crawlers and then repeats the whole policy, because a crawler only obeys one group

Comments 1
6 min read
Our QR codes are 5,906 characters of base64 in a Postgres text column, and the row has to exist before the image can be made

Our QR codes are 5,906 characters of base64 in a Postgres text column, and the row has to exist before the image can be made

Comments
4 min read
One palette in a package, 28 CSS variables beside it, and the file that calls itself the source of truth is still green

One palette in a package, 28 CSS variables beside it, and the file that calls itself the source of truth is still green

Comments
5 min read
Four calculators are four static pages with one client component each, and the index that would list them does not exist

Four calculators are four static pages with one client component each, and the index that would list them does not exist

Comments
8 min read
A dead URL on our site answers 404 in one namespace and a 307 to the login form in the next

A dead URL on our site answers 404 in one namespace and a 307 to the login form in the next

Comments
5 min read
loading...