Search took 0.77 seconds
Search for '#nargery' in texts
При разборке бэклога (которую я настойчиво провоцировал) не удержался и добавил одному тикету тег [正名], а тег [tech-debt] предложил переименовать в [dukkha], ибо любой живой продукт неизбежно не лишён тех. долга. Коллеги повеселились. Удобно, когда в команде много китайцев и индусов, так что все понимают твои культурные референсы! #nargery
Наблюдаю в конторе забавный момент. Ковбойский метод разработки, привычный для инженеров, работающих тут со времён, когда это был маленький стартап и вся технология умещалась в одной голове, начинает давать сбои. Корпоративный метод разработки, с дизайном, планированием, документами про это и пр., однако, ещё несколько не готов. #nargery
Так и запишем. Начал работать с grpc-node: где-то в марте. Послал им первый абсолютно тривиальный патч: конец мая. Патч принят: конец июля. Вышел релиз, включающий его: начало сентября. Это весьма активный проект, поддерживаемый гуглом. #nargery #software
Тривиальный патч требует столько же усилий чтобы прогнать его через процесс сколько и нетривиальный, поэтому его ценность должна быть относительно высокой.
· псы в рапидеНу, патч чинит реальный баг, не косметика. Я в основном о скорости процессов. Например, у меня две недели заняло поймать compliance officer и подтвердить у него, что я могу подписать contributor's license.
· 9000@9000: ну оно так и бывает в промышленном производстве софта. Билды, тесты, комплаенс, интеграция, куча народа последовательно чего-то должна сделать, оно и набирается. Ценность патча здесь очень вторична, обычно в этом деле важен сам факт изменений и иногда масштаб. Я видел случаи, когда срочный и важный QFE удавалось зарелизить только через девять месяцев из-за длинных цепочек зависимостей, расписаний и релизов, но зато тогда мы пошутили примерно все шутки про роды.
· Редкоземельный барахлит 3Работа в не очень большом стартапе внезапно напоминает университетские курсовые. Давайте сделаем небольшую действующую модель того, сего, чего-то хорошо известного, что готовое взять не получается (например, слишком дорого для наших масштабов). Всё понятно и теоретически нетрудно, и примерный результат хорошо известен, и rocket science абсолютно не предполагается, но и не запрещается, и вообще особо жёстких рамок нет. Это довольно развлекательно. #nargery
Пришёл интерн. Некоторые из нас немедленно написали для него примерный план работы, в котором я, схватившись за голову, первым делом предложил увеличить все сроки вчетверо. Нельзя так со свежим выпускником вуза.
· 9000 5Потратил два дня, чтобы убедить человека, что писать код с [redacted] плохо в целом, а в разрабатываемой новой системе безопасности — и подавно. Года полтора назад потратил тоже пару дней, чтобы убедить другого коллегу в другой конторе, что в авторизации внешнего API надо использовать [best practices по списку], а не [тоже redacted, но другое]. Полагаю, что примерно ради такого меня конторы и нанимают (ну, или должны бы). #nargery
В обоих случаях мне пришлось написать скелет правильной реализации и тесты к нему в качестве иллюстрации; в недавнем случае — также exploit для предлагавшегося кода, чтоб было понятнее, что дыра есть. Оба коллеги, кстати, весьма умны, схватывают на лету.
· 9000 5С другой стороны вспоминаю хорошую, как это по-русски, parable. Вот вообразим, что в 2000 году какой-нибудь здравомыслящий чувак убедил FAA и ICAO, что двери в кабину пилотов рейсовых самолётов должны надёжно закрываться, во избежание проникновения вооружённых посторонних лиц. Пусть к лету 2001-го все авиалайнеры приличных компаний снабдили бы кабины пилотов стальной дверью с замком. И не было бы 9/11, тысяч трупов, досмотров со снятием ботинок и ремней в аэропортах, запрета на пронос маникюрных ножниц на борт, войны дронов в Пакистане, вот этого всего. И никто бы не узнал, разумеется, о том чуваке; наоборот, может, причастные к отрасли считали бы, что из-за этого параноика-самодура приходится лишние 70 кг металла таскать на борту.
· 9000 12@9000: да, но нет. В ^этом сценарии повсеместно установленные двери довольно скоро начинают систематически оставлять незапертыми. Дальше вы знаете.
· kaznacheev 3[#nargery] В конторе мне сейчас досталось много писать на ES6 / Node. А там promises. Немедленно пригодились знания о монадках и их законах (для promise под определённым углом работают все, с одной выколотой точкой). Немедленно в коде возникли currying и point-free style, просто потому, что это понятнее и короче. Немедленно await воспринимается как `<-` внутри хаскелевской do-notation.
Самое приятное, что promises пошли в мэйнстрим, и все библиотеки либо выставляют их напрямую, либо обладают обёртками для преобразования интерфейса. Глядишь, и разумные паттерны в сообществе постепенно закрепятся.
· 9000@oleksandr_now: Не, promise ≠ thread, и порождать их надо не на каждый чих, а там, где API напрямую этого требует. Вообще, конечно, мне ещё сильно помогает то, что условные 25 лет назад я писал GUI-программы для Windows 3.1. Там та же система событий и concurrency в одной нитке, очередь сообщений и callbacks по их приходу, что и в ноде, и в реакте, только удобств вокруг неё сильно меньше. Могла бы и macos classic быть, там так же идейно. (Эрланг да, actor systems великая вещь.)
· 9000 1Python performance on Apline/musl vs vanilla Linux/glibc vs ClearLinux/glibc (from https://www.phoronix.com/scan.php?page=article&item=docker-summer-2018&num=4) — nearly 2x difference. #nargery #link
Apparent explanations: glibc does platform-dependent optimizations (https://clearlinux.org/blogs/transparent-use-library-packages-optimized-intel-architecture) and Clear Linux adds more (https://clearlinux.org/blogs/boosting-python-profile-guided-platform-specific-optimizations); all via https://news.ycombinator.com/item?id=19861990
· 9000 1Винды не хватает
· Glory to Mankind@9000: да чего реалистичного, кто вообще локально питон запускает сейчас? все сидят в жупитерах, который кто-то ушлый поднял в лавке.
· адский хардлайн в засадеПропагандирую среди коллег тестирование поддержки Unicode, и они проникаются. #programming #nargery
витгенштейна несложно, бармен предлагал что-то маргинальнее заворачивать, типа элроя.
· адский хардлайн в засадеReputation is when people add you to a pull request that has four approvals already, saying that maybe you could spot something. #nargery
My reputation is when people decide to add someone like you to my pull request, despite it having four approvals already.
· You and Mie-Grüneisen 11Кто не зарезал полгода назад на ревью кусок кода, который причудливо перемешивает логику и эффекты, тот сидит чинит баг в production, вызванный им. Коллеги, не знает ли кто краткого и внятного англоязычного текста или набора слайдов, рассказывающего в остальном грамотным инженерам, почему логику и эффекты полезно разделять и вредно перемешивать? Типа как есть про опасности goto, или про тот же railway-oriented programming. #nargery
Эффекты as in графическая анимация? Текста не знаю, но по-моему в 2018-м как-то самоочевидно должно быть, что нельзя такое смешивать. Ну хотя бы из идеологии MVC это элементарно выводится.
· Пью каркаде. Продолжаю работать. 1Today was the first day when someone else (not me) posted a link to "Railway-oriented programming" in the corporate Slack. #nargery
Коллеги, кто разбирается во фронтенде, поругайте мне Mithril? Задача: проект не по работе, маленький UI, но не настолько, чтобы хватило пары функций jQuery, а больше не сто́ит. Vue / Angular / Knockout: не хочу two-way binding, хочу unidirectional / FRP. React и даже Elm: не хочется толстого слоя трансляторов (хотя Elm, конечно, радует). Cycle.js: как-то там много писать руками, кажется. Что я упускаю? #nargery
Все лайкают и молчат, видимо, тоже хотят знать, но высказаться не рискуют.
· 9000Коллеги, положим. у вас есть задача отслеживать небольшие изменения в больших объёмах данных. Вообразите для примера ежедневный список запросов к 100k URLs; со вчера какие-то стали отдавать 404 или 500, какие-то — наоборот, и таких изменений — ну, полдесятка. Какой существующий инструмент вы возьмёте, чтобы генерировать ежедневный отчёт о таких изменениях? (Вопрос со звёздочкой: а если меняющиеся данные — не одно число, а небольшая структура, типа пары строк json, какой инструмент вы возьмёте, чтоб он умел показать изменения в этой структуре?) #nargery
Также, разумеется, если мне нужна история изменений за 10 дней, я не хочу хранить данные за 10 дней, они на 99% одинаковые. Хочется хранить только дельты.
· 9000^ А вот и нет. Эти друзья дали мне spark cluster и сказали: ну ведь твоя задача решается на нём в 20 тривиальных строчек? Ну да, решается. Всего 2 недели на получение нужных разрешений, въезжание в спарк и пр., и таки да, теперь всё просто. Изящная деталь: сначала у меня не получалось ничего сохранять в таблицы, ошибка формата и всё. Промучавшись день, я пошёл к владельцам кластера с вопросом. Они сказали: ха, да тебе дали доступ не к тому кластеру! Этот read-only для аналитики, а тебе нужен вон тот.
· 9000 1Захотел поправить одну строчку в ▒▒▒▒▒▒, на котором у нас весь ▒▒▒▒▒ ▒▒▒▒▒▒▒▒ держится. Нашёл исходник на питоне, посмотрел нужное место, нажал git blame, запомнил имя. Пошёл налить чаю, чтобы дать ненужным эмоциям схлынуть. #nargery
И нельзя ведь сказать, чтоб автор плохо написал. Аккуратно написал, подумавши. Просто он, наверное, фанат Go или другого какого языка про copy-paste, и вышло у него на 80% длиннее, чем могло бы. Но это легко лечится. Удивительно же (и печально) мне то, что человек, очевидно, с мозгами, совершенно не увидел этого, или, увидев, не счёл сколько-нибудь важным. И ревьюеры все поступили так же, надо понимать.
· 9000Возможно, что были ещё какие-то факторы, не очевидные сразу?
· retweet machine@whatever: Возможно. Но какие факторы заставили скопировать строго идентичные 5 строк примерно 10 раз, в строго линейном в остальном коде, мне пока догадаться не удалось. Код этот обрабатывает ошибки; не меняется даже сообщение об ошибке. На review я бы обратил внимание по крайней мере на это.
· 9000@vinsentru: ненене, не будучи жывотнам, я держусь в стороне от golang; пока острой необходимости в нём, к счастью, не возникало.
· 9000Из рабочего слака: "What do we tell to the god of reproducible tests? — Not `.today()`!". #nargery
А разгадка проста: близится переход на зимнее время, и некоторые не хотят, чтоб было, как в прошлый раз.
· 9000<раскланивается>
(1) Step on a problem. (2) Google for it, to no avail. (3) Start writing a StackOverflow post about it. (4) While collecting the minimal reproducible example, understand the source of the problem, and the solution. (5) Close the StackOverflow posting page, without posting anything. #nargery
(В рамках предновогодней #programming #nargery в ленте:) Любопытно, сколько лет нужно толковой идее, чтобы стать более-менее массовой, "модной". Garbage collection: 1960-е (Lisp) -> 1990-е (Java, Perl, Python, ObjC). ООП: 1970-е (CLOS, Simula) -> 1990-е (C++, Java, Perl 5, Python; Smalltalk массовым не стал). Hindley-Milner types: 1969 / 1978 -> 2010s (Rust; мне трудно считать Haskell и тем более OCaml особо популярными / модными, увы). Это не считая некоторого возрождения идей Lisp (1958) / Scheme (1970) -> 2010-е (Clojure).
Соотв. можно прикинуть, сколько времени пройдет до (возможной) популярности идей, показавшихся на поверхности 10, а то и 5 лет назад.
· 9000@vinsentru: язык - не будет, это невозможно. если текущее состояние не устраивает - учи эликсир. виртуальную машину фиксят постоянно, это сейчас один из приоритетов.
· Sierżant BóbrWarning: #nargery and #красноглазие ahead. Поскольку хочется радикально разделить "частное" и "рабочее", а покупать физически другой лаптоп для "частного" (пока) лень, поставил себе на рабочий макбук линукс в виртуалке, с десктопом и всеми делами. В качестве дистрибутива, вместо многолетнего традиционного дебиана, выбрал VoidLinux.
Почему не дебиан: потому что systemd (да, удаляется), потому что emacs 24 и апдейты раз в год, и потому, что полезно иногда пробовать что-то новое. К сожалению, к меня нет столько времени, чтобы всерьёз поставить радикально новое, например, Urbit. В этой же штуке нашёлся не только свежий emacs, но и, к примеру, свежий zerotier-one и hplip, так что воткнуть принтер оказалось тривиально.
· 9000Void Linux показывает себя хорошо, и пора, видимо, переставить его из виртуалки как основную ОС, поскольку лицензионная винда на конторском лаптопе говорит:
· cannot-run-windows-top.webp · 9000Some people run strange things on their #Android devices! For instance, XMPP or Git servers. https://play.google.com/store/apps/details?id=com.icecoldapps.serversultimate.packe
I remember feeling the mixture of excitement and ultimate stupidity while installing SSH and FTP servers to my first jailbroken iPhone.
· Пью каркаде. Продолжаю работать. 1Well, the mere idea of installing whatever *server* components to the *phone* sounded insanely crazy back in 2007.
· Пью каркаде. Продолжаю работать. 1https://news.ycombinator.com/item?id=12847576 – Finally the original promise of #Java language is being fulfilled! #WebAssemby is being tested in all major browsers, and it uses a stack machine with bytecode, a verifier, etc. Mere 25 years passed. #nargery
My new job is pretty buzzword-compliant: big data, natural language processing, machine learning, #functional #programming. The catch is that all of this is somehow small-scale yet (except maybe the entire codebase in #Scala). #personal
Притащили в набор инструментов штуку, написанную на Scala (gatling.io). CTO ухмыльнулся и сказал, что выдаст $20 тому, кто сумеет протащить к нам что-либо, написанное на Haskell. Ну что ж, #ChallengeAccepted. #nargery
https://github.com/begriffs/postgrest Вот эта штука вообще на раз находит применение, например отчётики внутренние выдавать графопостроителю какому-нибудь.
· адский хардлайн в засадеJust a random line from `/etc/password`: kafka:x:666:666::/opt/kafka:/bin/bash #nargery
(Not specifically planned; zookeeper took 665, etc.)
· 90001 2 3 4 5 6 7 8 9 10
Пост культурно аппроприирует!
· Стадо овец 12^ Мультикультурно! (А также в лайках, надо понимать, перепись читавших Кун Цзы. В следующий раз предложу заменить тег [quality-of-life] на [仁].)
· 9000 1