HNHacker News
TopNewBestAskShowJobs

dchest

14,766 karma · joined June 27, 2008

Dmitry Chestnykh, founder of Coding Robots, a tiny software company (productivity apps, currently: Mémoires, Video Mémoires). Created and maintaining "I Write Like" (https://iwl.me) and Calcish (https://calcish.com). Created BlogJet. Failed with StableLib (https://news.ycombinator.com/item?id=9342769).

Author of Password Authentication for Web and Mobile Apps (https://dchest.com/authbook/)

Based in Montenegro.

Email: dmitry@codingrobots.com

X: @dchest Bsky: dchest.com Mastodon: mastodon.social/@dchest

Website/blog: https://dchest.com

GitHub:

https://github.com/dchest

https://github.com/coding-robots

(CC-BY) All my comments on HN are licensed under Creative Commons Attribution 3.0 license.

submissionscomments
dchest··on Chopped, Stored, Secured – The Story of the Hash Function
Oops, of course, thanks for correction!
dchest··on Chopped, Stored, Secured – The Story of the Hash Function
> just a block cipher in the category of endofunctors

A block cipher is just a keyed pseudorandom permutation! :)

Imagine that we have arranged all numbers from 0 to 115792089237316195423570985008687907853269984665640564039457584007913129639936 (2^256-1) in an array and then shuffled that array 115792089237316195423570985008687907853269984665640564039457584007913129639936 (2^256) times uniquely, each time recording the resulting shuffled array.

Here's the Go-like type:

var perm [115792089237316195423570985008687907853269984665640564039457584007913129639936]uint256

This is an unkeyed permutation (we can already build a secure hash function like SHA-3 from it, e.g. SHA-3 uses [2^1600]uint1600 permutation, while Ascon-Hash uses [2^320]uint320. The best we can do with ours is 2^127.5 collision security).

A keyed permutation takes 2^256 of these arrays, again shuffled differently and uniquely, so we have:

var keyedPerm [115792089237316195423570985008687907853269984665640564039457584007913129639936][115792089237316195423570985008687907853269984665640564039457584007913129639936]uint256

A block cipher is just P[k][p] where k and p are indexes into the arrays. Let's call k the key and p the plaintext — first we select one particular permutation using the key, and then select the resulting number (ciphertext) using the plaintext.

A simple hash function built from this keyed permutation splits the message into 256-bit numbers and then selects permutations using the message as k, and previous value as p and adds them together:

   h = (some starting number called IV)
   h += keyedPerm[m[0]][h]
   h += keyedPerm[m[1]][h]
This is SHA-2, SHA-1, MD5, etc, and with a slight variation and a larger block cipher, BLAKE(1,2,3).

Of course, it's physically impossible to have that much memory for the arrays and it's physically impossible to shuffle that many times, so a block cipher is an approximation of that by smashing and rearranging bits, hoping to cause diffusion and confusion.

dchest··on macOS Container Machines
Did you use their volumes for node_modules or a shared dir? I mounted the whole project directory (with node_modules) inside the container and it seems to work fine (MBA M1 8 GB RAM).
dchest··on Apple reveals new AI architecture built around Google Gemini models
The are not a "gatekeeper" under DMA (not enough users). Same as macOS.
dchest··on Android will now warn you if a caller is impersonating someone you know
That's almost what it does? It's in the article:

> "When a contact calls you and you're both using Phone by Google, their device sends a silent confirmation signal in real time to your device to verify the call is legitimate and truly coming from the contact's device," Google writes in a blog explaining the new feature. "Because this digital handshake uses end-to-end encrypted Rich Communication Services (RCS) technology, it is completely private."

dchest··on Cloudflare Turnstile requiring fingerprintable WebGL
They'll just tell you to clear cookies and use Chrome.
dchest··on Debian ZFS packaging team add warning, ZFS unsupported since Linux 6.12
"RT kernels"
dchest··on BBEdit 16
Well, obviously, software can't do things that the author didn't write code for. But AppKit components do get updated with some new features even if the original software didn't have support for them originally.
dchest··on BBEdit 16
> For instance, an app can't start using Apple Intelligence if it's compiled with an older version of the SDK that doesn't know that such a thing exists.

That's not true, it became available in all NSTextViews by default, although with a bit different look.

dchest··on Native all the way, until you need text
Fun fact: the original iPhone's UITextField and UITextView were backed by WebKit (https://x.com/kocienda/status/1400484168199401477)
dchest··on Ask HN: We just had an actual UUID v4 collision...
How does a high-reliability system have a broken /dev/random? You're better off fixing it rather than trying to fix every downstream component that uses it. You can put your AES-128 counter there if you can count reliably.
dchest··on Ask.com has closed
That was after IAC:

"Additional acquisitions in 2006 included ShoeBuy.com,[46] which the company later sold to Jet,[47] and Connected Ventures including CollegeHumor and Vimeo".

dchest··on 20 years on AWS and never not my job
Colin, if I remember correctly, you first ran Tarsnap servers on Ubuntu before you made FreeBSD work on EC2. At what point were you confident enough to switch to FreeBSD?
dchest··on OpenRouter Raises $120M at a $1.3B Valuation
They are a marketplace for model providers, which is quite a nice business model.
dchest··on Show HN: Apfel – The free AI already on your Mac
https://webmachinelearning.github.io/prompt-api/

Already in Chrome as an origin trial: https://developer.chrome.com/docs/ai/prompt-api

dchest··on ace.me is your new website, email and cloud. Simple. Fast. Secure.
> Traffic encryption with 2048-bit TLS, the successor to SSL

With 65537 exponent, the successor to 3.

dchest··on LibreOffice: Request to the European Commission to adhere to its own guidances
I just downloaded the ODS version and it comes with .pdf extension, had to rename it. It also uses Aptos Narrow font (from MS Office), which gets substituted.
dchest··on Workers who love 'synergizing paradigms' might be bad at their jobs
Note that this isn't a study of actual workplaces, it's based on cognitive tests, so "bad at their jobs" may be a stretch. For example, "overconfidence in one's intellectual and analytic abilities" may be good for business, e.g. when dealing with US government contracts in 2026.
dchest··on MacBook Neo
Yes, it can -- to all questions.
dchest··on MacBook Neo
8 GB M1 MacBook Air does support Apple Intelligence.
dchest··on Httpx closing down issues and discussions due to "skewed gender representation"
Why can nearly every big tech take care of their supply chain? :)

Clearly, the maintainer doesn't want to do this job anymore, and it's not a requirement when releasing your code to also do stuff unrelated to programming.

dchest··on Httpx closing down issues and discussions due to "skewed gender representation"
How is _your_ supply chain a concern of this open source developer?
dchest··on Don't use passkeys for encrypting user data
Nothing in this post is specific to passkeys; it reads like advice to not encrypt data. There’s no way to prevent some users from losing their encryption key anyway. Whatever warnings you include, even when software doesn't connect to the internet and just encrypts local files, someone will write to support that they forgot their password and ask you to "reset" it.

Good advice at the end, though.

dchest··on Making Wolfram tech available as a foundation tool for LLM systems
It's under the Live tab of Wolfram's channel:

https://www.youtube.com/@WolframResearch/streams

Sessions are called Live CEOing, e.g.:

https://www.youtube.com/watch?v=id0KH0sfHI8

dchest··on Text classification with Python 3.14's ZSTD module
https://bellard.org/ts_zip/
dchest··on I made my own Git
While Fossil uses SQLite for underlying storage (instead of the filesystem directly) and various support infrastructure, its actual format is not based on SQLite: https://fossil-scm.org/home/doc/trunk/www/fileformat.wiki

It's basically plaintext. Even deltas are plaintext for text files.

Reason: "The global state of a fossil repository is kept simple so that it can endure in useful form for decades or centuries. A fossil repository is intended to be readable, searchable, and extensible by people not yet born."

dchest··on Spanish track was fractured before high-speed train disaster, report finds
If you paste the comment it replies to into ChatGPT, it generates almost exact same answer as that comment. Also, "Finally, ..." and "it's not A, it's B" is a good tell.
dchest··on ISO PDF spec is getting Brotli – ~20 % smaller documents with no quality loss
No, it's literally just compressing small files without training zstd dict or plugging external dictionaries (not counting the built-in one that brotli has). Especially for English text, brotli at the same speed as zstd gives better results for small data (in kilobyte to a few of megabyte range).
dchest··on ISO PDF spec is getting Brotli – ~20 % smaller documents with no quality loss
Not with small files.
dchest··on The Overcomplexity of the Shadcn Radio Button
That's what I mean: if you reimplement it, you need client-side JS to support keyboard navigation.
← PreviousPage 2 of 34Next →