its been 6 months since i started a solo trip into Client-Focused foundations
learned a lot, enjoyed a lot, i hope the first ship will be out in two months
it will be a beta client of what i believe a Client-Focused app is capable of with the right foundations
the point is to be fast and keep all data within user's reach search-wise, speed-wise with an offline first flavor
The Foundations are 4 tools (literally 4 js modules), they all revolve around statelessness
1- BATrie: simply a rank trie, a super efficient rank-based data structure that powers all datasets within my setup, its makes queries like 'give me all items between date-x and date-y' stateless no matter how big the dataset is
*yes its named after my family name 'Badri'
2- Continuum: a consumable normal js array that doesn't hold any items, it literally initializes internally like "const arr = []; arr.length = datasetCount;" where datasetCount can be 10 million items on disk, and all accessed indexes are materialized from disk on-demand with each js tick, it was built with dom-element virtualizers such as
in mind, Continuum can work standalone without BATrie but that would require the app to bookkeep all items addresses in-memory.
3- ItemsBroker: a 150 lines of js code that controls deduplication and disk cleanups by storing a owners_count for each item's unique id so multiple datasets can share the same item in disk, it can work standalone but that's almost useless.
4- GlobalTrie: a conventional words trie that processes all incoming strings to make them searchable and super compressed, also depends heavily on BATrie to work in stateless fashion
if you made this far, i would like to tell that i learned why almost nobody would go this far into such details, but its actually more fun, there are plenty gaps to fill, ranks are still fixed that is a gap the dictionary is still a sketch that is a gap....
if you see this as fun or share a similar interest in Client-Focused development you can join Client-Focused Development public group where you can share stuff about any thing related to the subject
(dogs, bastards and jews aren't targeted by this note)
*it works on 0x chat

2- Continuum: a consumable normal js array that doesn't hold any items, it literally initializes internally like "const arr = []; arr.length = datasetCount;" where datasetCount can be 10 million items on disk, and all accessed indexes are materialized from disk on-demand with each js tick, it was built with dom-element virtualizers such as GitHub
GitHub - inokawa/virtua: A zero-config, fast and small (~3kB) virtual list (and grid) component for React, Vue, Solid and Svelte.
A zero-config, fast and small (~3kB) virtual list (and grid) component for React, Vue, Solid and Svelte. - inokawa/virtua
