Local-first и децентрализация
707 subscribers
140 photos
19 videos
3 files
312 links
Replicated Object Notation,
CRDT, распределёнщина и децентрализация.
Ведёт @gritzko
Чат @Ronzgovory
Download Telegram
Поскольку мои эксперименты с ABC косоглазые всё равно спиздили, этот проект досрочно переводится в режим open source. Сомневаюсь, что они за этим и приходили. Но я буду ближайший месяц коммитить ABC с прекрасного Бали. Что-то другое трогать не могу (тоже украдут). Выбора, как видите, особо и нет. Не на пляже же лежать среди стройных красавиц. Но если вдруг перестану постить - значит я там :)

ABC - это Algebraic Better C, я про него тут писал чуть ранее неоднократно (6 раз за 2 года). Буду писать гораздо больше. Но опенсорсить буду по-сицилиански, по одному пальцу файлу.

Заодно отвечу на вопрос "как сделать defer в C" (несложно)... ну и на самый интересный вопрос - почему я в 2024 работаю над диалектом C? (Он разве не слышал про ChatGPT?) К ChatGPT это тоже имеет самое прямое отношение.
👍6👎4💊1
Чемоданное-невероятное

Как лирическое отступление, расскажу-ка ещё недавнюю историю. На дырявом ноуте я всё-таки не могу по психологическим причинам работать почему-то.
Так вот. В прошлом с моими чемоданами случались приключения всякие, поэтому я к поездке в этот раз готовился аккуратно, всё упаковал, перепроверил, коды чемоданов записал. Первый пункт был Бангкок, остановка на ночь, потом рейс BKK DPS на Бали. Чемоданы оставил в гостинице, вышел погулять часа на три. Гостиницу, кстати, бронировал на ходу, уже когда к ней ехал.
Утром, в гостинице, перед выездом в аэропорт, обнаруживаю, что на большом чемодане левый замок открывается любым кодом, а правый моим (записанным) не открывается. Опа. Попробовал так и сяк, не открыл. А чемодан хороший, японский, нареканий не было никогда.
Тем не менее, поехал в аэропорт. С чемоданом, в который не могу заглянуть. Интеллект 90лвл.
В аэропорту открыть чемодан так же не смог, он уехал в багаж, я на самолёт. В аэропорту Бали таможня, прочитав мою фамилию, резко направляет меня на досмотр (одного из огромной толпы). И по рации передают про меня.
Досматривающий хочет посмотреть тот самый чемодан. Второй чем и рюкзак не особо интересуется. Я говорю, открыть не могу, дайте ключ TSA. Он достаёт мастер ключ, открывает.
Наркотиков не нашли в результате. Но я обнаруживаю следующее: после мастер-ключа, замки открываются любым кодом!!!
Через несколько дней у меня дошли руки и я стал лечить чемодан. Левый замок переставил на новый код, правый опять никак не хочет. То есть открывается любым кодом, а менять не позволяет. Я давай перебирать коды 000...999. Замок щёлкнул на 078, повезло. Тут я совсем прифигел. Этот код я использовал в первой половине 2023 на этом самом чемодане, 620078 - это почтовый индекс моего детства. Но с тех пор менял неоднократно и новый на бумажке записанный, совсем другой. Правый - 200.
Тем не менее, удалось сменить код.
У второго же чемодана никаких аномалий не было.
Итого получается, что кто-то зашёл в номер гостиницы в Бангкоке, открыл мой чемодан мастер ключом и выставил на одном замке прошлогодний код.
Ну и, не исключаю, что выдал ориентировку на Бали, что едет наркоторговец. А траву получается сам выкурил. Которую подбросить собирался. Ну, судя по результатам спецоперации.
Вот так и живём два года уже.

В принципе, странноватые истории и раньше были, но не настолько. Один раз я получил этот чемодан из багажа и на замке был код 555. Я предположил, что кто-то перебирал простые коды, но следующую цифру пробовать побоялся :) Другой раз я взял чемодан с ленты, но немного отойдя, решил открыть, проверить. Код не подошёл. Я долго возился, все разошлись уже от ленты. Посмотрел туда - там мой катается, один одинёшенек. И вокруг никого. Посмотрел на этот - они идентичны, Legend Walker одной модели, новые оба, без наклеек. Хорошо до таможни дойти не успел. И жаль, что не догадался изучить бирки багажные.

Но всё равно, в этих двух случаях хотя бы какое-то несложное объяснение было.

P.S. Ну и полностью согласен с мнением, что в TSA замках никакого смысла. Мастер ключи легко достать.
🤯20🥱7🥴7😁2😐21👍1
Media is too big
VIEW IN TELEGRAM
Пожалуй, завершающий аккорд про Великий Китайский Насос. Вот, человек на конфе в Шанхае рассказывает, как всё выглядит со стороны Китая. Если вкратце, за 70 лет стырили полную номенклатуру технологий для современной экономики полного профиля (с 4:00). То есть, международная кооперация им теперь не очень-то нужна - нужны источники сырья и рынки сбыта. А в Европе, например, и в целом в Pax Americana, международную кооперацию специально развивали, "чтобы не было войны". Ни у кого нет экономики полного профиля - никто не может начать войну (пропадут поставки чего угодно - всё посыпется). После двух мировых войн решили так делать. Но теперь это правило сломано. Ну, как говорится, пристегнитесь.
Ведь чтобы поддерживать экономику полного профиля - нужны рынки сбыта больше, чем у конкурента. Эта логика собственно и привела к двум мировым войнам, с железной неизбежностью.
😱10🥴21🥱1😴1
Local-first и децентрализация
Пожалуй, завершающий аккорд про Великий Китайский Насос. Вот, человек на конфе в Шанхае рассказывает, как всё выглядит со стороны Китая. Если вкратце, за 70 лет стырили полную номенклатуру технологий для современной экономики полного профиля (с 4:00). То есть…
Что же до кражи технологий, то тут, по моей оценке, уже ситуация overfishing. Это когда десять дикошарых рыбаков гоняются за последней рыбёшкой. Почти всё что можно было украсть - уже украдено. Крадуны не хотят, чтобы их поувольняли - нужно ещё что-то найти. Собственно, чёс Huawei по российским вузам и институтам, вероятно, имеет эту природу.
В этой связи, конечно, удивил Илон Маск, открывший завод в Китае. Несколько лет прошло - и сотня (!!!) китайских конкурентов, откуда-то получившие технологии, теснят Tesla на всех рынках.
В общем, прогноз негативный. О чём и говорит докладчик (война всех против всех).
😢21🥴1🤓1🙈1
Local-first и децентрализация
А собственно я в открытую дверь ломился. Вот, безопасник, часто ездящий в Китай всё объясняет на StackOverflow. От себя добавлю, что многое из упомянутого я уже испытал на себе: подмену зарядных устройств, вынос устройств ночью из номера, копирование SSD и…
Это кстати очень интересная задача технически - как утащить 100тыс жёстких дисков без палева. Прямо с лаптопов, в гостиницах или где получится. По результатам конечно все поймут, что случилось, но всё должно быть deniable. "Вам показалося, примите-ка таблетку."
Если бы только 100 дисков и только в больших городах (допустим Китая), то можно ниндзя отправлять, которые вися на потолке будут ноуты развинчивать и платки впаивать. А 100тыс уже должно быть
1. idiot proof и
2. deniable.
Мало ли кто будет исполнитель, мало ли что напутают.
Я попробую выстроить цепь логических рассуждений, а через несколько лет может случится leak и мы проверим.
👍31😁1🥴1🤓1
Local-first и децентрализация
Это кстати очень интересная задача технически - как утащить 100тыс жёстких дисков без палева. Прямо с лаптопов, в гостиницах или где получится. По результатам конечно все поймут, что случилось, но всё должно быть deniable. "Вам показалося, примите-ка таблетку."…
100.000 это неизбежно в разнообразных локациях, включая ебеня (курортные зоны, например) - уж куда клиент поедет, там и работать. А даже у квалифицированных электронщиков будет какой-то процент брака - резьбу там сорвал или шлейфик поломался или собрал неаккуратно, не работает. Поэтому отвёрточную работу лучше свести к нулю.
Оператором технологии будет не ниндзя, а уборщица. Даже без выноса из номера можно, если ноут оставлен лежать и есть пол-часа.
Устройство должно выглядеть невинно, подключаться по USB-C и вмещать терабайт.
Удобней всего шифроваться под power bank. Вообще без проблем.
Даже если уборщицу застукают, что крайне крайне маловероятно, если клиента ведут (выдернуть повербанк - секундное дело), то она просто расплачется и скажет что хотела просто повербанк зарядить, и убежит в слезах (с повербанком). Если вы продолжите качать права, вам предъявят настоящий повербанк идентичного вида. Могут даже подарить. Пока-пока, Шерлок!
🥴4😁2😢2🤨2👍1🤓1
Local-first и децентрализация
100.000 это неизбежно в разнообразных локациях, включая ебеня (курортные зоны, например) - уж куда клиент поедет, там и работать. А даже у квалифицированных электронщиков будет какой-то процент брака - резьбу там сорвал или шлейфик поломался или собрал неаккуратно…
Ноут может быть включен, выключен или в саспенде. Перезагрузка нежелательна. Я бы тут поставил на уязвимость в BIOS. Особенно если говорить про Китай, через них проходят и все биосы и почти все материнки, есть кому разобраться в вопросе. Можно даже чипец подправить - например, вместо 8MB ставить 16MB незадекларированной памяти. Чип пилить никто не будет. Впрочем, это может быть и не нужно.
Если у нас есть уязвимость в BIOS, эксплуатируемая через USB, мы уже можем сделать две вещи: получить копию диска (без проблем) и выудить пароль, если диск зашифрован.
4👍1😁1😢1🥴1🤨1🤓1
Local-first и децентрализация
Ноут может быть включен, выключен или в саспенде. Перезагрузка нежелательна. Я бы тут поставил на уязвимость в BIOS. Особенно если говорить про Китай, через них проходят и все биосы и почти все материнки, есть кому разобраться в вопросе. Можно даже чипец подправить…
Опять же, BIOSу сложно лезть в операционку и зашифрованный диск, а вот кнопочки записать и эксфильтровать - без проблем. Вообще, зная китайский менталитет, они если знают 100 уловок - будут использовать все сто. Так что эксфильтрация будет сразу всеми способами.
Если интернет подключен - вообще без проблем. Всё улетит одним DNS пакетом в AWS и будет выловлено из лога. Вы никогда это не заметите, а если заметите - ничего не докажете.
Теперь усложним. Компьютер airgapped, даже платочка WiFi/Bluetooth выкручена.
🤨3🤓2🥴1
Local-first и децентрализация
Опять же, BIOSу сложно лезть в операционку и зашифрованный диск, а вот кнопочки записать и эксфильтровать - без проблем. Вообще, зная китайский менталитет, они если знают 100 уловок - будут использовать все сто. Так что эксфильтрация будет сразу всеми способами.…
Тогда следующий вариант - эксфильтрация звуком. Очень дёшево и просто организуется из BIOS. При нажатиях кнопок комп пищит на низких частотах (которые только собаки слышат), никакой памяти не используется, никакой сетевой активности. Если у клиента или кого-то поблизости взломан телефон - всё можно сделать с комфортом. Записали, прослушали, вот пароль.
Если телефона рядом нет (крайне маловероятно, что мы доберёмся до этой точки даже в одном проценте случаев) - придётся отправлять кого-то с телефоном, послушать писки. Этот кто-то должен загять позицию сзади пользователя, потому что ноутбучные динамики по замыслу шумят в пользователя (а не в коллегу, сидящего впереди). Значит, нужно занести телефон за спину.
Это либо какой-то свой человек должен делать, либо (сценарий в кафе) лучше отправлять парочку. Вы сильно напрягётесь, если какой-то дядька зачем-то вам за спину зайдёт, да и тётька тоже. Вы вводите пароль - динамик пищит - слышат только Бобик и смартфон злоумышленника. Исполнители даже могут не знать, что они делают - палево минимальное.
👍4😢3🤨2😁1🥴1🤓1
Local-first и децентрализация
Тогда следующий вариант - эксфильтрация звуком. Очень дёшево и просто организуется из BIOS. При нажатиях кнопок комп пищит на низких частотах (которые только собаки слышат), никакой памяти не используется, никакой сетевой активности. Если у клиента или кого…
Если по какой-то причине и это не сработает, остаётся только срать логами клавиатуры в резервные сектора всех флешек, которые вставляют в комп. Авось, попутным ветром, как-то это доплывёт до злоумышленника.
У меня всё.

P.S. Все фамилии вымышлены, все совпадения случайны.
👍4😢2🥴2🤨2🤓2🏆1
C 80-х в ЮВА было такое явление, как торговые центры электроники. Сейчас это скорее в прошлом. Pantip в Бангкоке стоит пустой - с ковидом, торговля электроникой окончательно перешла в онлайн. В Сингапуре, есть Sim Lim, но там очень пустынно, а самое живое место - фудкорт, куда бегают студенты-архитекторы из академии неподалёку. В этот раз я купил на Sim Lim кабель и три переходника, хотел облегчить рюкзак - перейти на один USB-C зарядник с переходниками в lightning и micro. Купил в трёх разных лавках, все четыре вещи - нерабочие. Это, считаю, необыкновенный результат. Подозреваю, от правительства есть какие-нибудь квоты по визам или что-то такое, и, чисто по-китайски, они только изображают, что торгуют, разложив по прилавкам купленный по весу брак из Шеньженя.
Low Yat в Куала Лумпуре однако ещё жив и траффик довольно хороший.
Кто был в Акихабаре - рассказывайте, что там.

P.S. В комментах сказали, Акихабара жива. Но если судить по Ютубу, электроники там поменьше, много аниме и хобби. Yongsan в Сеуле, по-видимому, сдох.
🤔7😁6🥴1
Опять ноут испоганили.
😢6🤯5🤣2🥴1🤨1
Есть замечательный подкаст про Local-first, всем рекомендую. В этот раз там был Maximilian Alexander, бывший коллега. Я из Realm отвалился в JetBrains, а они свою компанию стартовали, Ditto. Мне предлагали какой-то процент за участие, но из JetBrains мне уходить не хотелось совсем.
Ну, теперь у них большая контора, продают CRDT энтерпрайзу, от Пентагона подняли гору бабла.
А я участливым девушкам доказываю, что за мной ходят шпионы и что я не псих.
Салтыков-Щедрин. Англичане ружья кирпичом не чистют. Или как говорили в СССР, два мира - два Шапиро.
На этой грустноватой ноте в канале объявляются каникулы до 1 сентября.
😢10👍4🔥3🥴2👎1🤔1👨‍💻1
Мои давно анонсированные эксперименты с С кстати давненько уже на Github. Я сейчас в процессе написания манифеста, фидбек приветствуется.

Общий смысл в следующем: подход с уровнями абстракции, как известно, может преодолеть любые проблемы, кроме чрезмерного количества уровней абстракции.
Подход ABC (Algebraic Bricklaying C) в том, чтобы использовать простые кирпичики, которые можно было бы произвольным образом комбинировать, не добавляя уровней абстракции. Основным кирпичиком там является буфер записей фиксированного формата, типа Bu8 или Buuid128 или Bsha256.

Мы ничего не инкапсулируем, у нас даже битовая раскладка записей является частью API. Вместо этого у нас простое и аккуратно специфицированное неизменное поведение элементов, так что в результате инкапсулировать нам нечего и незачем. Мы комбинируем.

Задача ABC - максимизировать хорошую комбинаторику в коде, когда мы комбинируем имеющиеся примитивы для получения нового поведения, и минимизировать плохую комбинаторику - т.н. "межглючное взаимодействие", которое и является корнем всех проблем.

В целом это эволюция С в другую сторону, нежели C++, Rust, Java или даже Go. Борьба со сложностью, без рантайма.
Скорее даже, мы тут стараемся повернуть комбинаторику сложности в свою пользу.
🔥8👍4👎21🥴1🤣1
Немного истории ABC. Диалект возник при написании storage engine для RON/RDX. В чём преимущество подхода в данном контексте: ABC контейнеры (типа мапы, векторы) можно в неизменном виде отправлять по сети, маппить на файлы, меркл-хэшить и так далее. То есть контейнер - он сам себе protobuf, сам себе sqlite (немного преувеличу).
Работа в таком формате привела к очевидному выводу: мощь такого комбинирования стоит того, чтобы под неё адаптировать другие части системы.
Другая большая идея - это слайсы и буферы из поинтеров, в этом канале уже обсуждалась. В С, по древности его, слайсов не было, а в C++ их с переменным успехом добавляли, но на двадцать лет позднее чем нужно было.
Короче говоря, я рассчитывал всё привести в порядок за лето, но жизнь сложилась немного по-другому (это я тоже освещал здесь). Тем не менее, буду по-тихому приводить в порядок.
👍101👎1🥴1😴1
Local-first и децентрализация
Немного истории ABC. Диалект возник при написании storage engine для RON/RDX. В чём преимущество подхода в данном контексте: ABC контейнеры (типа мапы, векторы) можно в неизменном виде отправлять по сети, маппить на файлы, меркл-хэшить и так далее. То есть…
Другая забавная часть (как я провёл лето) это интеграция Ragel в ABC. Там забавность в том, что из одной eBNF грамматики герерируется парсер со всем бойлерплейтом. Бутстрап шаг - это когда лексер парсит свою грамматику (грамматику грамматики) и генерирует сам себя (модуль LEX).
Тех, кто развлекается написанием компиляторов, такими трюками не удивить, а я только чуть-чуть затянулся :)
В качестве экзампла там сделан на рагеле парсер StrictMark, это единственный диалект Markdown с формальной грамматикой (мой). Флагманский CommonMark грамматики не имеет, т.е. там совместимость парсеров в принципе невозможна.
Собственно, CommonMark сам с собой не совместим в результате - спека продолжает активно меняться уже 10 лет. (Страшная правда о Markdown.)
👍7🥴21👎1🥱1
Fundamental theorem of software engineering: All problems in computer science can be solved by another level of indirection, except for the problem of too many layers of indirection.
Это сказал David Wheeler когда-то в 70-х. Человек сделал карьеру программируя на ассемблере. Мог ли он вообразить, как далеко всё может зайти? (И это ведь ещё не предел).
Но вот нашли SPECTRE и оказалось, что геологические наслоения уровней абстракции и изоляции легко пробиваются, прямо до железа CPU.
Абстракции - это сказки про сказки, которые мы рассказываем сами себе.
😁5👍4🥱2👎1🥴1🫡1
Небольшая administrativia. У меня увели почтовый аккаунт gritzko@ya.ru, перерегали на другой телефон. Я его использовал для ВУЗовских дел. До того год долбились в ящик на microsoft, который я не использовал никогда.
Но постепенно добрались и до Телеграма и тут начались всякие странности. Поскольку с устройствами у меня беда, я год пользуюсь взломанным телефоном, то просто заранее предупреждаю - если вдруг канал удалится или что-то странное появится, то я ни при чём.
(Куда девать три скомпроментированных ноута - ума не приложу. Выброшу наверное. Причём, цены покупки ноутов в хронологическом порядке: $1400, $700, $400, $170 -- приспосабливаюсь к такой жизни. И это то, что на руках. Два ликвидных давно сбыл. Такие вот приключения за два года.)
🥴7🤯4🤨4🫡3😱1🥱1🤣1
Skiplog потихоньку выкладываю.
За 1% overhead, превращаем любой поток/лог в logN-искаемый.
👍11👏3🥴21👎1😢1