Skip to content

Instantly share code, notes, and snippets.

View ackvf's full-sized avatar
🏡
Remote Fullstack Node.js / Frontend React.js / Web3 integrations

Qwerty (Vítězslav Ackermann Ferko) ackvf

🏡
Remote Fullstack Node.js / Frontend React.js / Web3 integrations
View GitHub Profile
@ackvf
ackvf / README.md
Last active March 31, 2026 08:20
I hate prettier and you should too.

This is why I hate prettier and why you should too

This here is a collection of reasons why I genuinely, viscerally dislike Prettier. There’s nothing “pretty” about any of this, and it’s not really “the same” either. It’s just deterministically ugly for everyone in exactly the same way — that’s its only real benefit: eliminating arbitrary cosmetic diffs and drift.

Human evolution has optimized us to be exceptionally good at recognizing visual patterns. Our perception is highly sensitive to similarity, symmetry, proximity, alignment and predictable grouping (Gestalt principles).
Therefore indentation, grouping and alignment become cognitive shortcuts.

When a formatter breaks these (e.g., awkward line wrapping, misaligned constructs (e.g. operators)), it increases cognitive parsing cost, even if the code is technically “consistent.”

On the other hand, Prettier's goal was never optimizing for readability. Its design goals were:

@ackvf
ackvf / README.md
Last active March 31, 2026 16:28
React utils
@ackvf
ackvf / README.md
Last active January 29, 2026 15:45
TS/JS utility functions
@ackvf
ackvf / README.md
Last active January 29, 2026 17:08
Bookmarklets and script snippets
@ackvf
ackvf / README.md
Last active January 26, 2024 05:10
Crypto scripts
@ackvf
ackvf / README.md
Last active April 13, 2022 16:26
eToro scripts

How to use this?

enable balance

Create new Bookmark

add new bookmark page

Edit Bookmark details

@ackvf
ackvf / README.md
Last active February 9, 2026 03:37
TypeScript type toolbelt
@ackvf
ackvf / CommService.ts
Created February 10, 2021 15:19
Services
import CoreAPIService from './CoreAPIService';
import { CommentInterface } from '../interfaces/requestInterface';
class CommService {
// CREATE
addCommentToRequest = async (requestId: number, data: FormData) =>
CoreAPIService.post(`comments/${requestId}`, data, { 'Content-Type': 'multipart/form-data' })
.then<CommentInterface>(response => response.data);
// ==UserScript==
// @name Neptune's Pride 2 devel - Triton userscript
// @version 1
// @description This plugin works with Triton's data structures and performs advanced tasks on them.
// @namespace http://qry.me/
// @author Vitezslav Ackermann Ferko (Qwerty), qwerty@qry.me qwerty@cqproject.me
// @copyright 2014+, 2021+, Vitezslav Ackermann Ferko (Qwerty)
// @licence Released under MIT licence
// @downloadURL https://gist.githubusercontent.com/ackvf/464bc077f430cdd8677bbd9669d47605/raw/9285c7c3be05d5fac70cab8dac6db5589921d9b1/qscript-nptriton.devel.intro.monkey.js
// //run-at document-start
@ackvf
ackvf / compose-functions.ts
Last active April 29, 2020 11:42
Typed compose
/**
* @name compose
* @summary Composes Higher-Order-Functions from right to left so that they are executed from left to right.
* note: To compose Higher-Order-Components, use compose.ts
*
*
* @description
* Two overloads are available:
* A) Matches the composed signature of whole compose to the wrapped function.
* B) As an escape hatch, it is possible to explicitly define the resulting OuterSignature with a generic, ignoring the HOFs types.