animated

Странная идея

Если на блокчейне запилить тотализатор на дату/время/место смерти человека - получится идеальный сервис убивания людей за деньги.

Странно, что такого еще нет. Ну и интересная тема поразмышлять за либертарианство, теорию игр, политику, и прочее про людей.
animated

GraphQL

Посмотрел ролик: https://www.youtube.com/watch?v=783ccP__No8

Подумал что IT Science - больше не про N(n), а приведение масс людей в движение в правильном направлении.

Сами мы GraphQL мы давно юзаем, и искренне считаем, что без него надо быть башней ебнутым начинать аппу.

Осознал, что даже такая простая хуйня как GraphQL, за 7 лет, типа еще новая для многих. Сотни лямов баксов инвестиций.

Если что, GraphQL, вообще-то - это способ закинуть весьма уёбищный аппликативный функтор считаться на сервере. Причем авторы - этого не особо понимают (хотя может просто хитрые).

Ну и повангую:
- дураку уже очевидно, что идея декларативного языка, в котором можно из O(N^4) автомагически сделать O(log(N)) - токсична. SQL должен умереть.
- понятно, что надо эволюцию, а не революцию. Нужна простая идея, опирающаяся на имеющиеся наработки
- GraphQL хитро решил проблему "что если нам закинут программу, которая ебнет сервер". Тупо white list программ и банить
- кто-то сообразит, что можно выставить API в стиле:
- кидаем WebAssembly,
- у нее есть API в стиле db.persons.byId(111)
- она выкидывает взад JSON

Короче кто не ссыт - можно ёбнуть новый мир.

Апелляция Насти Брюхановой в ЦИК

Наблюдая происходящие события, о выборах писать непросто. Когда полицейские избивают людей на улицах без всякой причины, открывают фейковые уголовные дела и сажают кандидатов в депутаты, то какие тут выборы?

Но с другой стороны именно ситуация с выборами показала очевидную несправедливость, которая пробудила общество, поэтому, может, заниматься ими и имеет смысл, даже в таком формате.
Так или иначе, мы подали в ЦИК аппеляцию Насти Брюхановой, которую не допускают в 42 округе. Вот, кстати, тут хорошее ознакомительное интервью с ней

Подписей у Насти хватает. Как вы знаете, собирались они теми же сборщиками и тем же штабом, что подписи Дарьи Бесединой, которая зарегистрирована в 8 округе и в её подписях нашли 6% брака. Процент реального брака в подписях Насти примерно такой же, но так как по ней было политическое решение не допускать, то забраковали больше подписей.

Для регистрации необходимо 4803 подписи. В данный момент у Насти 4438 действительных подписи, а 845 забракованы. Чтобы её зарегистрировать, необходимо вернуть 365 подписей и вот как они могут вернуться, если рассматривать подписи объективно:

124 — Забракованные графологом граждане подали письменные заявления, подтверждающие, что подпись и дату оставили именно они собственноручно. К большинству заявлений прилагается телефон, можно позвонить и уточнить, а также копия паспорта. Также это подтверждает независимая экспертиза,
51 — ФМС забраковал адрес, паспорт или ФИО без пояснений, но по ГАС выборам человек находится и голосует в округе (вбивали номер паспорта в открытый сервис МГИКа и получали УИК в округе)
48 — Помарки, не влияющие на читаемость подписи или заверения листа,
30 — Нотариус, заверяя паспорт сборщика, ошибся в цифрах кода подразделения, все подписи сборщика забраковали. Нотариус внёс уточнения, имеется копия паспорта,
28 — Подпись забракована по ошибочным данным в базе ФМС, гражданин написал заявление и приложил копию паспорта,
22 — Ошибки ввода в базу ФМС,
19 — нет ошибки или исправления либо технические ошибки при заполнении ведомости,
17 — Ошибки в базе ФМС, подтверждённые заявлением гражданина с контактами,
12 — Чего-то не хватает в адресе, но он однозначно устанавливается
12 — Сборщик сменил временное удостоверение личности на паспорт в процессе сбора, все подписи забраковали. Имеется копия и того, и другого,

На этом этапе мы перешли границу в 365 подписей, которые надо вернуть, чтобы зарегистрировать кандидата

3 — Забраковано по адресу визуально, но адрес находится в округе по ГАС выборам.
27 — Несовпадение с базой ФМС из-за описок в листах, подтверждённые заявлением гражданина с копией его паспорта,
94 — остальные графологические подписи. Имеется экспертиза, говорящая о том, что все забракованные даты выполнены не одной рукой, а разными. Также имеется более 50% забракованных граждан, написавших личные заявления. Логично было бы всю экспертизу признать недействительной. Все даты, признанные как сделанные одной рукой, можно посмотреть тут.
111 — Ошибки в заверении листов сборщиками, не мешающие однозначно определить сборщика заполнившего лист. К примеру, сборщик в качестве года своего рождения написал 2019. При этом, в листе имеется вся информация о нём, его паспорте, на других листах есть реальная дата рождения, он нотариально заверен. Но тут — описка.
19 — Описки в подписях, не влияющие на читаемость,
11 — МГИК вычеркнул то, что не вычёркивал ОИК. Нашёл новые неправильные подписи,
9 — Ошибки ввода в базу ФМС, но забраковано по иной причине (это вообще не особо понятная категория)

В общей сложности 637 подписей являются реальными, настоящими подписями граждан, проживающих в округе №42, пожелавших видеть кандидата от Яблока, Анастасию Брюханову, в бюллетене. У Яблока, кстати, в этом округе поддержка около 18%, много подписей просто от сторонников Яблока пришли.
208 подписей это реально брак (ну, или ошибки в базе ФМС которые мы не смогли доказать). Это 4%. У Бесединой было 6%, логично, что это близко.

Конечно, если стоит задача отказать в регистрации Насте, то ЦИК может сказать, что нет оснований не доверять эксперту-графологу и базе ФМС, а заявления граждан мы могли подделать, как и копии паспортов. Можно позвать ещё одного графолога и забраковать новых дат, как мы видели, для этого совершенно не нужно, чтобы они реально были выполнены одной рукой.

Но факт имеется очевидный: достаточное количество граждан поставили подписи в поддержку Брюхановой, достаточное количество этих подписей верно оформлены. Если проводить проверку добросовестно, с целью не снять кандидата, а реально выяснить, достаточно ли людей оставили свои подписи — будет регистрация.
Жалоба в ЦИКе будет рассмотрена на этой неделе




animated

Должен ли программист уметь программировать?

Статья на хабре:

Почему Senior Developer'ы не могут устроиться на работу
https://habr.com/ru/post/460901/?reply_to=20426003#comment_20426003

Типа заставляют задачки решать, пидоры.

Я тут собесал как-то чувака, типа 10 лет опыта, лид/PM. Попросил открыть студию - нету студии. Ок, давай попишем где-нибудь еще. А он такой: "знаешь, у меня уже кинжал заржавел". Вот это вот "кинжал заржавел" - стало локальным мемасом. И я всегда, всех, на собесах прошу писать код. И даже клаву нормальную им притаскиваю, чтобы не тыкаться в ноут незнакомый.

Прошу не красно-чёрные деревья, а прям тупо "найди в строке слова из массива". И дальше - а как-нибудь не за O(N^2)? Dictionary - ок, а как оно внутри работает? А давай мы еще запятые отпарсим. И смотришь - от входа код говно, или даже после нескольких хотелок прилично всё. А если человек кодит збс - то и в голове дальше порядочек.
animated

Россия - мать

Я ж сейчас проживаю в Беларуси. Кстати правильно именно так, а не "Белоруссия" - потому что 8 миллионов людей, юзающих русский язык, уж имеют право одно-то слово в языке поменять как им нравится. И хер с ним что не по правилам. А кто там втирает что надо "Белорусь" - пойдите блядь "ю" из "парашюта" выньте лучше. Парашутисты не обидятся.

Так вот - когда я приезжаю на родину, то первое, что бросается в глаза - это как нагло и в лоб люди хотят тебя наебать и спиздить деньги.

Прилетаю в Шереметьево. На стойке "Яндекс такси" спит чувак. Разбудил, заказал. Дальше мне звонит таксист с понтом "я тут в центре, они ошиблись, отмени заказ". Я ему "иди нахуй товарищ, это же ваши проблемы, не?". Бросаю трубку. Он перезванивает. Шлю нахуй второй раз. Перезванивает. Не беру.

Но чемпион по говноедству в России - безусловно кампания "Мегафон". Они всегда найдут способ спиздить весь остаток, пока я телефоном вообще не пользуюсь. Ну типа делают опции вроде "мы вам подключили мелодию на гудок, через месяц начнем брать деньги если не выключите". Прям как в 90-е, голод, не наебёшь - не проживешь. Ну или доче вон подрубили тариф какой-то - типа раз в день звонить. И хуярят по 25р в день, и нигде в личном кабинете нельзя понять за что платишь, и как это выключить. И когда им звонишь - тоже не могут выключить. И еще спрашивают: "Как вам мегафон вообще? Не нравится? А чо так?".

После Москвы, Беларусь выглядит так:
- выходишь из автобуса, проходишь терминал насквозь, без ебанных этих вахтёров со сканерами, никому не показывая паспорт - просто насквозь идешь. Садишься в автобус за 3 BYN (90 RUB), доезжаешь до метро
- выходишь из метро, чувак какой-то смотрит вокруг и такой "а не знаешь - тут курить можно?"
- работаешь, гуляешь, занимаешься детьми, без ебаной политики и вот этого всего говна

Не поймите неправильно - где-то что-то лучше, где-то что-то хуже. Но плюсы Беларуси для меня - это что можно спокойно жить, не прыгать по лужам, не стоять в пробках. И думать о своём будущем, а не о судьбе любимой родины.
animated

Make Me...

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

Вторая тема - это что все QA и локальные инстансы БД разворачиваются с минифицированных и обфусцированных продакшн-бекапов.

Т.е. все мои проекты всегда пилятся, тестятся, на настоящих кейсах. Ну типа там есть реальный "Саша" - руководитель, которому надо то-то глянуть. Есть "Яша" - технарь, без особых прав, но ему надо чтобы удобно. Весь UX/QA живёт параллельными жизнями других, реальных, чуваков. "Саша охуеет тут выбирать" и "У Димы три задачи, ебанулись ему давать фильтры тут" - типа такого.

Я вот не уверен что у всех такое есть. Если вы делаете софт внутри конторы - как я - прям в первую очередь запилите. У всяких яндексов - понятно А/Б тестинг, вся хуйня.

У кого есть круче?
animated

Яша Хуяша

Давайте попробуем новую ёбаную хуйню. План такой:

1. Вы подписываетесь на мой телеграм: https://t.me/yasha_huyasha
2. Мы вместе, на старости лет, пытаемся понять чо это за хуйня вообще.
3. Нихуя не выходит. Мы псим что дети стали долбоёбами.
4. Смерть
animated

Про фуллстек

Наблюдаю печальные проекты, на которых лид - джавист, с представлением о фронте уровня типа: "Реакт? Мне говорили лучше ангуляр. Ну да ладно. Где тут у вас верстальщиков набирают?". Ну дальше всякое типа: "мы вам REST API вон дали, дизайнеры вон скрины нарисовали, пилите, у нас тут поважнее дела есть - микросервисы настраивать".

И начинается:
- фронты делают по 50 вызовов к API на скрин с дичайшим overquerying
- бекенд - оптимизирует эту лишнюю нагрузку
- дизайнеры рисуют компоненты на килобаксы, чисто потому что фронты молодые и без права голоса
- т.к. на бекенде особо нечем заняться - вынимай с БД да кидай в API, начинается изобретаться всякое говно типа 5 слоёв абстракции, CORS, и чего-нибудь еще модного для важности
- проблемы архитектуры сваливаются на фронтов, например "если это API лежит, рисуйте крутилку" или "если сервис A отдал ID, а в B по такому ID пока ничего нет - рисуйте крутилку и пингуйте"
- сами фронты без присмотра, всегда берут Redux, и занимаются копипаст-онанизмом

Алё, ребяты! Фронтенд сейчас - зачастую, наиболее технически сложная часть, и именно она продает продукт. А API - ключевой элемент, определяющий всю архитектуру. Нельзя технически лидить фронтовый проект, не понимая проблемы html/css/js, и не шаря в распределенных системах - чтобы строить API.

Короче, с сегодняшнего дня писю начинаем называть хуем, и начинаем лечить триппер. В современном мире бек - делает что надо фронту, как надо фронту, забирая у него всю работу которую можно забрать на бек.

Ну и про фулстеков, думаю, в этом контексте понятно. Рядовые бойцы могут быть узко-специализированными. Технически руководить проектом должен человек, который шарит весь стек.
  • tonsky

Пациент умер, выносите

Opera Paper Products как-бы-шутка-но-не-такая уж и шутка
Opera Paper Products как-бы-шутка-но-не-такая уж и шутка

Я занимаюсь веб программированием 15 лет. Когда я начинал работать за деньги (компьютер у меня был и раньше, конечно), IE 6 был самым передовым и инновационным браузером, Firefox должен был вот-вот появиться, разработчики верили, что будущее за XHTML, до первого драфта HTML 5 и запуска StackOverflow оставалось 4 года, а до первого Chrome – пять лет. 

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

Получается вот как. Веб хорош для быстрого прототипирования, простого delivery, но масштаб его роста сильно ограничен. Грубо говоря, он подходит только для прототипов и игрушечных задач. Что-то вроде языка Basic, вроде и программы писать на нем можно, но всерьез его никто не берет. Веб, конечно, не пропадет, но в конечном счете займет место какого-нибудь там питона, на котором будут детей в MIT учить и ученые не слишком требовательные графики рисовать.

Почему? Качество. Все, сделанное на вебе, просто не доводится до какого-то сносного качества. Да, на вебе можно начать, и это будет быстрый старт. Но веб нельзя дожать до приемлимого состояния. От слова никак. Обязательно будет смешно, плохо и стыдно, а хорошо и быстро — никогда. Все веб-программисты на самом деле верят, что это они недостаточно стараются, но если было бы время, можно было бы сделать нормально. На этом самообмане вообще вся веб-индустрия держится. Но нет. Нельзя. Ни за какие деньги. Просто физически невозможно.

Ладно, простые статические страницы с текстом — ок, может быть. С адблоком и reader mode жить можно. Хотя и тут есть умельцы, которые умудряются сто слов отрендерить в страницу в 20 мегабайт, потому что технологии, инновации и disruption.

Что-то чуть сложнее — все, говно лезет из всех щелей. Веб-приложения? Интерфейсы? Сразу вешайтесь. Веб не создан для приложений и не развивается в эту сторону даже. Нет ни одного человека, который бы искренне любил веб-версию чего-либо и предпочитал ее нативной. Как только появляется альтернатива, даже иллюзия альтернативы, даже электрон-приложение, — всё, команда с крысами покинула корабль.

Сказать, что веб-приложение работает «нормально» можно только если очень, очень сильно смотреть на какой-то очень и очень частный случай сквозь пальцы, стиснутые настолько сильно, что они превращаются в фейспалм, и только если очень, очень верить в идею веба и хотеть это «нормально» увидеть. В определенных условиях на определенной мощности машине страничка может проскроллиться относительно плавно. В определенном месте экватора сайт может открыться условно быстро, а в определенное время конкретного дня в веб-консоли даже не будет ни одной ошибки.

Но если взять платформу в целом, без сверхподвигов и свехржертв, иллюзия пропадает. Если дать на нее посмотреть человеку, не укушенному веб-пропагандой, иллюзия пропадает. Как только приложение открывает кто-то, отличный от его собственного разработчика на гигабитном интернете и двенадцатиядерном аймаке про, иллюзия пропадает. Начинается бесконечный поток убогостей, шероховатостей, заусенцев, тормозов, проблем, ошибок, которые в принципе не устранить никаким образом. Даже если у разработчика есть внимание и желание возиться с такими глупостями, даже если приложить бесконенчые усилия — нет, оно не исправляется в принципе. Я знаю, я сам такой разработчик, и я пробовал много раз, и много раз обжигался. Хотя когда смотришь издалека, на бумаге, вроде все хорошо. Что может пойти не так? Да все что угодно. И не только может, но и пойдет, причем в самом неожиданном месте. Веб это такой аналог российского автопрома — издалека вроде тоже машина, вроде тоже ездит, че еще надо-то? Но, как мы все прекрасно знаем, есть нюанс.

Существует ли версия этой реальности, где веб вырастает во что-то более значимое? А как же WebAssembly?

А что WebAssebly? Эта чехарда имеет смысл только только для людей, которые думают, что компьютеров нигде кроме браузера не существует. Очнитесь, ребята, это еще один никому ненужный слой абстракции. Мы с радостью себя отбросили на N лет назад и теперь с радостью это преодолеваем. WebAssembly — это попытка запихнуть в веб то, что без веба прекрасно работало уже несколько десятков лет как — С++ приложения. Чтобы что? Я не знаю чтобы что. Чтобы условный Вася все равно качал себе Слак, завернутый в Электрон, зато теперь написаный на WebAssembly. Смотри, мам, он почти как нативный, даже иконочка есть! И почти не тормозит. Почти-почти. Еще раз — попробуйте выкинуть говно веб-пропаганды из головы и взглянуть на это трезво. В чем тут достижение-то?

Не то чтобы я НЕ хотел чтобы веб во что-то превратился. Я хотел, может, даже больше других. И был момент лет десять назад когда многие в это верили и был еще шанс. Просто пора зафиксировать (давно пора, я просто немножко тормоз, конечно) что веб это веб, не больше и не меньше. Все эти глюки, неровности, тормоза, неудобства, несовместимости, интервенции — это не временные мелкие неприятности, которые вот-вот разрешатся со следующим апдейтом Хрома. Это неотъемлемые свойства платформы, она такая сейчас и примерно такой же будет всегда. Надеяться уже в принципе не на что. И не то чтобы у меня было для вас что-то получше, или что я могу сказать, где будущее. Все что я могу сказать что оно точно не здесь.

animated

Про микросервисы

У нас на конторе сложилась архитектура Self-Contained-Systems: https://scs-architecture.org/index.html Типичный проект — это один какой-то бизнес с owner-ом, команда в ~10 человек на всё про всё, одна репа, одна БД, SPA-фронт на реакте, и бек на .NET/Java для API и каких-нибудь worker-ов, ~100 таблиц, ~20 скринов.

Интеграции делаются двумя способами: REST API для синхронных интеграций, Kafka — для асинхронных интеграций и репликации данных. Большая часть интеграций — асинхронная. Например, все данные для работы — всех сотрудников или города/страны, каждая аппа забирает себе в БД.

При этом, регулярно новые люди мне рассказывают что мы делаем не так. Что нам надо микросервисы. На вопрос: «а почему, по-твоему, штука, которая тебе employees в кафку кладет — не микросервис?», они обычно говорят что надо иметь userService, чтобы /users?get=123, и не забирать людей в каждую БД.

Таким товарищам по-кругу задаю такой пример. Есть два сервиса:

users.svc/get?age=23&city_id=2,3,1
locations.svc/get?id=1,2,3&country='RU'

Как вытащить всех пользователей с age=23 из городов с country='RU'? Вынуть все города России, и передать их ID в users? Или вынуть всех пользователей с age=23, вынуть их city_id и передать в locations?

Collapse )