Skip to content
View darkdi's full-sized avatar

Block or report darkdi

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
darkdi/README.md

Backend for a living: 1C-Bitrix and Bitrix24, PHP, MySQL, fourteen years of it. Moscow. The rest of my time goes to a game and to other people's codebases.

DarkVell

github.com/darkdi/darkvell

An open-source browser MMORPG. Phaser on the client, an authoritative NestJS server on the other side, TypeScript across npm workspaces. Authoritative means the server owns the world state and the client only asks: no trusting the browser about where you are or what you hit. That constraint is most of the interesting work, and it is why realtime PvP is the part I care about getting right.

Reading other people's code

Documentation and the code under it are two statements about the same thing, written at different times, and almost nobody compares them. A @param name against the signature below it. A \param in a header against the declaration it documents. Linters skip this, because a linter reads the code and this needs you to read the code and the comment next to it.

So I run checkers that do the comparison, one per language, and then read every hit by hand before it becomes anything. The tools are wrong about a third of the time and always in their own favour, so the reading is not optional. What they get wrong goes into a file of its own rather than quietly disappearing.

What came out of it

26 merged pull requests across 21 projects, among them:

home-assistant/coreconfig entry removal was not shielded from a client disconnect. A race, with tests, not a comment fix
laravel/telescopemerged by Taylor Otwell
nlohmann/jsonmerged by Niels Lohmann
NVIDIA/cudf18 Doxygen tags in the C++ API
mrdoob/three.jsstale JSDoc in the WebGPU renderer
twisted/twistedeight epytext fields in the core
saltstack/salt · tesseract · mlflow · astropy · FreeCAD · qutebrowser · Prefectthe rest of the same work

Three rules I did not have at the start and would not drop now. Read the project's own policy on AI assistance before touching the code, and follow it even when nobody would check. One pull request per project per day, because twelve in a day reads as a campaign no matter how correct each one is. And write the description by hand: if a sentence can be verified by opening the diff, it does not belong in the description.

rant.ae · Telegram @rant_root

Popular repositories Loading

  1. darkvell darkvellPublic

    Open-source browser MMORPG with a Phaser client and authoritative NestJS realtime server

    TypeScript 3

  2. redtest redtestPublic

    CSS

  3. school21 school21Public

    C

  4. htgpt htgptPublic

    JavaScript

  5. extensions extensionsPublic

    Forked from raycast/extensions

    Everything you need to extend Raycast.

    TypeScript

  6. undici undiciPublic

    Forked from nodejs/undici

    An HTTP/1.1 client, written from scratch for Node.js

    JavaScript