суббота, 21 мая 2022 г.

Двойственность

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


Сейчас другие противоречия и двойственности. Родина - это не жопа президента. Вне зависимости от жопы, президента и страны. Что такое Родина, государство, страна, быть русским или не русским. На этой неделе даже мем про паспорт хорошего русского появился. Даже слово "война" первые два месяца почти была табуирована, категорщики бы использовали "ко-война", но их мало бы кто понял.


Для меня понятие Родины схлопнулось до определенной части города и видимо первых 5-10-20 лет жизни там. Сейчас в моем родном городе на центрально площади на театре опера и балета висит Z-ига. Город родной, но прямо сейчас понятие Родины ушло куда-то во времени и пространстве.


Понятие быть русским - пока все еще для кого русский язык является нативным. Если вы с Дагестана и сдали ЕГЭ на 100 баллов по русскому языку (честно сдали) - то для меня вы русский. Да, возможный акцент, или регион происхождения. Но какой-то общий культурный пласт, мемасики, смешная реклама в телевизоре из 90-х, пока это еще смотреть можно было. Пропаганда пыталась и все еще пытается отфильтровать, что "русские = это те, кто за президента, остальные типа не русские". Тут сраться с ними даже не хочется, ок, я не прошел тест. В моих определениях это деление на адекватность. 


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


Государство - это что-то плохое, сразу бюрократией какой-то отдает. Страна - это все еще про географию, поля, березки, или что там у вас растет. 


Понятие "наши" - стало вообще сложным. Это как будто вы на футбольном матче, и болеете за какую-то конкретную команду. Я на футболе был раз 5-6 за последние годы, один раз в России, все остальное за границей. Чисто ради кругозора и развлечения. В России это была Португалия-Мексика(?), 2017, турнир перед ЧМ. Короче, у меня нет такого понятие как "наши".


Войска РФ какого-то хера делают на территории Украины. Есть понятие мое и не мое, только первое лицо, и дополнение. Войска точно не мои. И Крым не мой. Видимо, с 2014го ментальный барьер на это слово. Президент тоже не мой. Там чуть раньше пошло. Единственное где проскальзывает, так это "нам крыш", известная игра слов про полуостров. Хотя "нам" и "наши" формально разные слова.


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

воскресенье, 10 апреля 2022 г.

Как это вывозить?

- Никак.


Кукуха уже почти начала забивать на все. Но вскрылись новые факты. Опять несколько дней, и мозг принимает новую реальность. Да, российские войска массово (на текущий момент известно про несколько сотен; очевидно что числа станут сильно выше) умышленно убивает мирное население. 


Из тяжелого, это даже не фотографии тел. А снимок 6-ти летней девочки, на фоне могилы матери во дворе. И банки консервов, которые стоят на перекопанной земле. Это не взрослые ритуалы с поминками. Попытка покормить маму. 


Говорят, только у обезъян тоже трудно приходит принятие смерти. У всех остальных животных - типа, ну ок. Обезъяна-мать может неделями ходить с телом своего ребенка, процесс разложения тела, все остальные физико-химические процессы. Но не процесс принятия.


У людей же, появился алкоголь, наркотики, способность говорить и сарказм в твиттере. Шутки про смерть, это сейчас как способ вывозить. Для всех, кто вне боевых действий, это далеко, за экраном интернета или пропаганды. 


Какие-то терракты в Ираке, Сирии и любой другой африканской стране. Это было все далеко. Сейчас эти все вещи также далеки для жителей Ирака, Сирии и любой другой африканской страны. 


В общем, хочется остаться хотя бы на уровне обезьяны. Еще несколько слоев, и "ну ок" станет реакцией на все. Отдельные виды обезьян тоже ходят с палками стенка-на-стенку, и там тоже все кроваво. Надеюсь, вы поняли, про какой уровень обезьяны я говорю.

воскресенье, 27 марта 2022 г.

Хуй войне

 Миру тоже пизда.


Прошел месяц безумия. Пишу тут, очевидно для себя, для собственной кукухи.


Контекст, так получилось, что за месяц до всего этого я по работе переехал довольно далеко. Формально, это даже страна НАТО. Это персональный бложек, тут года 3-4 назад было 6 читателей. Скорее всего, возможно это прочитает пару симметрично знакомых человек. Товарищ майор, я буду писать местами с матом, потому что иначе сложно. Буду называть вещи, как они у меня в голове и на языке, другого к сожалению у меня нет. То, что за слово "война" уже светит 15 лет, я в курсе. Но это на Родине. Да и за слова из трех букв тоже. "Нет" и "мир", к сожалению, тоже в списке.


А теперь к противоречиям. 


Мозг очень пластичная штука. В первый вечер было очень тяжко. Тут был вечер, когда все началось. Дышать было сложно. Из алкоголя дома было только вино, а впервые в жизни захотелось что-то тяжелее. Следующие недели 2 было просто тяжело. После месяца уже целый день можно пропустить новости.


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


У нас коллега в Киеве, первые сообщения были уровня "у нас тут началось, видимо пока будет не до работы". Пару недель ночевал в подвалах, потом продолжил работать. Не знаю, как измерять поражения кукухи, это сложно и с долгими последствиями.


Телевизора не видел более 10 лет, эпизодически у родственников только. Но я пока боюсь заглядывать в их мысли. После первых разговоров в первые дни что "санкции скоро снимут", "мы пенсионеры, вне политики", понятно кто это говорит. Разговаривать конечно нужно, пусть лучше от меня чем во дворе. Я пока не вывожу даже себя.


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


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


Когда это конкретные люди, города, это более чем персонально. 


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


Понятие "наши", "русские", "Родина" - очень противоречиво. Пропаганда пытается натянуть "русские = которые за того парня". Очевидно, что линия есть. Мой президент например, сидит. Официально ему вкатили 9 лет строгача, но на новостной ленте это уже капля в море. По ту стороны от линии отделения видно, что это не более чем набор букв. 


Я таки довольно оптимист, это все закончится до 2036-го года. Мой прогноз был что 27 лет - это период полураспада. И конституция РФ, и Лукашенко, и рокерский клуб. Пока конечно, еще долго вниз, уверенность в завтрашнем дне (читать как "дно") будет поддерживаться. 


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

среда, 3 июля 2019 г.

Погодный бот


Немного саморекламы пет-проектика.

https://t.me/wikiWeatherbot , или же @wikiWeatherbot - бот в телеграмме, который отслеживает осадки по заданным гео-точкам.

- Зачем это? 
- Раньше были прогнозы, уровня "вероятность дождя на завтра 40%". Сейчас метеорадары отслеживают и прогнозируют осадки с точностью до километра и десятка минут.

- Зачем это если есть Яндекс.Погода?
- Тут можно догадаться, откуда я беру данные. Да, говорят в мболильном приложении даже уведомляет, что в центре города "осадки не окончатся в течении часа". Проблема в том, что "центр города" и что обычно нужно, это как минимум две разные точки. 

Можно добавить дом/работу/дачу и стадион, в разных городах/частях города. Бот будет отслеживать и сообщать об осадках, если они прогнозируются в течении двух часов. Диаметр Москвы составляет 40 км, между домом и дачей даже в провинции расстояние довольно значительное. В одном месте ливень, в другом - ни облачка.

Работает на территории России, СНГ и Европы (пожалуй, только Лондон не цепляет).

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

В общем, после старта бота - просто киньте ему гео-локацию (в приложении внизу есть "скрепка", это подменю). Потом можно переименовать, принудительно проверить и прочее. Справка есть.

вторник, 23 января 2018 г.

Наскальная живопись и боль

Запись больше для себя, сохранить текущий стейт продвижения по scala. Без StateMonad.

И так, прошло 4.5 года, как я как проститутка, за деньги на работах на scala.

Недавно прошла внешняя мысль, что чем больше ты испытываешь боль, тем больше продвижения по ФП. Тонко/философско, что-то есть. Вообще обучение и боль связаны, если не БДСМ.

Короче:

Есть немного котов, но от туда в основном моноид. Плюсов kittens, он генерит для котов моноиды для ваших АДТ. Монатки, ну стандартные, котовых и скалазишных явно нет. Пока нет боли, не пройдено. Пару мест где вызывает M.traverse/sequence. Traverse пока в процессе осознания. МонадТрансформеров нет, потому как в пару мест достаточно traverse.

Type constructor, то что погружение в F[_] - есть не более двух.

Тайпклассы - очевидно есть, торчат где только можно/модно.

Фри - ничего нет. Далекое понимание, но близкого к боли нет.

Shapeless - есть пару использований. В целом прикольно и больно. И правильно.

Сейчас пошел кусок akka/akka-streams. Очень круто. 5-6-7-8К rps (ну, не совсем rps, item-ов из kafka) на одной машине, вращаешь данными по правилу правой руки. В akka пока только persistence, sharding пока в прототипе. Иного пока не надо.

Макросов нет, scala.meta - вертится на языке, но без боли.

Стандартный slick && play.json. На другое смысле смотреть нет, боли нет.

Рекурсивных схем нет, были краткосрочные 10 секундные интервалы времени когда что-то открывалось. Но без боли.

Сопряжений и профункторов тоже нет.

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

Ко-вещей - нет.

Оптики тоже нет, ради одного места не стал добавлять. Извините, там copy(copy), не глубже. Сплю спокойно.

Чистоты как в haskell - нет. Кое-где это вызывает боль и кровь в глазах. НЕ ХВАТАЕТ.

Выводы: боль - это хорошо. Мир - это война, свобода - это рабство, незнание - сила.


понедельник, 7 августа 2017 г.

Про бегуна на длинные дистанции

Десять тысяч и всего один забег
Остался. (С) В. Высоцкий


Таки Саша М. замотивировал бегать. Записались на 10к в сентябре еще прошлым ноябрем. В апреле потихоньку начал тренироваться.

Бег сам по себе довольно бюджетный спорт. Более шахмат, конечно. Но не хоккей, например, или биатлон. Все что реально нужно, это нормальные кроссовки и нормальные часы/пульсометр. 

Увы, в России (провинции) купить часы и кроссовки практически не возможно. Не знаю как в столицах, но тут ритейлеры возят с коэффициентом 2-2.5 по цене. В Ростове-на-Дону кроссовки есть (Топ-Лига), но как-то вне основных путей. Я там не был, просто Саша А. там купила в командировке. 

Вышло, что в Европе получается адекватнее, и еще taxFree работает. Часы Garmin Forerunner 235 вышли около 15к, кроссовки Asics Cumulus - 10к. 

Всякие wristBand от Китая не смотрите, оно должно пульс непрерывно мерять, а не раз в минуту. GPS, куча аналитики и графиков, социалочка с друзьями, в простом Китае этого нет.

Начинал в начале апреля (еще снег и лед) где-то с 4к за 6:40 на км. Масса зимняя - 95кг. Кроссовки образовались ближе к концу мая. Там через неделю перешел на 7.5к. 

Сейчас я уже 4 года пишу на Scala и чувствую себя отлично спокойно делаю 10к за 50:20 (надо бы в течение месяца/двух пробить 50 минут), то есть 5:02 на км. Масса 82кг, то есть от зимнего ушло 13кг (после майских и Питера все равно был 95кг).  По массе еще точно 3-5кг на животе болтается, масса вторична, просто бегать с лишними 10-13кг оно по определению тяжелее.

Все бегал с оглядкой на пульс, последние недели две тупо по темпу (стабильно 5:15, или чуть быстрее по ощущениям), последний км на максимуме. Вообще не устаешь. До этого чисто по ощущениям первые два км идут быстро, но и сам потом упарываешься. Не надо так, бегайте в стабильном темпе.

Еще, в жару (все что выше 20) бегать сложно. Градусов 15-17 - идеально. Но в этой стране либо непрерывный дождь, либо жара в 25, либо стадион закрыт. В жару я решил более 7к не бегать, там обезвоживание что-то быстро идет, вообще не кайф.

До бега часа 4-5 вообще не есть (иначе больно), после вы сами не захотите. Двойная экономия. 

Еще, на такой дистанции с меня выходит 1-1.5 кг, очевидно воды. Рекомендуют восстанавливаться специальными жидкостями, а не просто водой. Там состав по солям/электролитам ближе к человеческому (гуглится, можно купить или что-то самому делать).

В общем, мотивируйтесь.

четверг, 18 августа 2016 г.

Про м*

Нет, не про мудаков.

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

Так вот...

Это наиболее простое объяснение, которое я когда-либо встречал:

https://www.quora.com/Can-I-understand-monad-as-a-container-performing-certain-computation/answer/Bartosz-Milewski?share=a7312bea

В молодости ты все думаешь, что контейнер - это некая структура данных. Так вот... забейте, это не так. Думайте, что это контейнер (никакой STL тут не причем).

Самое важное, что есть в функциональном программировании (и вообще в программировании. и мире в целом) - это композиция  ("композибилити"). Это когда выход одного может быть входом другого. Для ФП - это как бы базис. Хваленное ООП не такое, тут понятие вход/выход выходит за рамки ООП. Ну а в мире, один из самых простых примеров - вилка-розетка. Это только потом Lego появилось.

Так вот... Иногда удобно, когда у вас выход чем-то обернут, назовем это "чем-то" контейнером. И хочется сохранить композицию. То есть следующая функция берет оригинал, и возвращает опять обертку. И мы это композируем.

В мире java до сих пор (2016 год у меня на дворе) любят null. Все-таки немного про мудаков. Всякие вариации nullable, Option[_] и есть контейнер. Мудаки все равно будут утверждать что null быстрее работает, что-нибудь про боксинг говорить. Мудаки как есть. Закончили про них.

Еще контейнер - список. Функция возвращает не просто один "детерминированный" вариант, а целый список. Список пустой - функция загнулась. Список из одного элемента, единственный результат. Несколько элементов - резветвление "недетерминированных" вычислений (тут кавычки нужны, оно конечно все детерминированно).

Представьте, что задачу о N-ферзях считаете, либо что-то другое рекурсивно-переборное. То есть если вернулся пустой список, то все, ветка вычислений дальше не пойдет. Если несколько вариантов, то дальше на один уровень для каждого варианта углубляемся и машем.

Аналогия с прямолинейным Option/nullable тут на лицо. Если - косяк, то - косяк. Иначе живем. Можно обернуть этот косяк к красивым сообщение об ошибке. Так вот... у нас есть еще один контейнер.

А фьючи..? Например поэтому не хочется говорить структура данных, это именно контейнер.

Про упоротых хаскеллистов я пока не буду, мне рановато. Все равно IO() немного маджик, там как-то скрыта ссылка на внешний мир.

State он прикольный, но я тоже ничего здесь писать не буду. У меня местами есть подозрение, что в какие-то моменты времени до меня доходят Free M* и trampoline. Трансформеры пока мимо кассы.

А так реальный пример с широкими массами: заметил у Сереги на работе код на swift-e. Тот унылый треугольник кода, где пять вложенных if-ов, в каждом проверка на null и что-то деланье. Выразил свое негодование. Через неделю проверил, там 4-5 вынесенных мини-функций, но все равно по факту лапша. Континуэшенами не втирал, но близко. Оказалось, что в swift у Option и так есть map/flatMap. Переписали в 4 строки, ни одного if-a.

В первые полгода сначала кажется, какой же классный синтаксис, for работает и со списками, и с фьючами, и с Option. Так вот, это не синтаксис, это и есть м*.

ЗЫ. Вот и философский вопрос. Предположим есть язык, в котором достаточно богатая типизация, м* вынесены как абстракция, но нет for-comprehension. Вопрос, на который день он появится?

вторник, 10 мая 2016 г.

Изоморфизм с едой

Таки услышал хорошую мысль от Erik Meijer, про всякие agile&&scrum. Делюсь.

Вот в McDonalds работает куча необразованного персонала тинейджерского возраста, им нужно куча инструкций/бизнес-процессов, что бы из полуфабрикатов (читай, тоже так себе продукты) сделать что-то более-менее съедобное.

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

Конец цитаты (вольный пересказ).

Все эти ваши методологии (с) направлены на:
- взаимодействие с "верхами" (заказчик/клиент/менеджер)
- показать прозрачность разработки/планирования
- ...

Но никаким образом не сказываются на внутреннем качестве кода. Тесты/CI/code_review как-то мимо. Оно и понятно, что scrum-ы и для производства автомобилей применимо, где code review отсутствует. Так и получается, что все все равно говорят на разных языках.

А выход у программиста - это код. И с моей точки зрения, нужно все метрики вводить на код. Хороводы у костра - это дистракт от кода, и программистам он вообще теплее не делает (а всем остальным руко-водителям как бы теплее).

Вместо получения нормальной спецификации по задаче (да, это сложно, но это как-то нужно делать) вводят кучу *-мастеров, по словам Erik-а, вообще на сетевую пирамиду похоже.

ЗЫ. После ухода с МС, Мейер как-то много где тусил. А потом как-то пропал. Вообще, локально обсуждали, думали опять с кем-то поругался. Оказалось, его хорошенько по здоровью скосило, на полгода. Вывод: не строить домыслов.

пятница, 6 мая 2016 г.

Алгеброидная хроника

Организованная группа лиц в поле пыталась извлечь корень из единицы. В последнее время участились случаи использования таких корней при производстве пучков ко-гомологий, контрамодулей и других психотропных веществ.

РосМатриксКонтроль удаленно зафиксировал незаконное использование размерности больше 3, на место предполагаемого преступления выехала оперативная полугруппа "Анти-Тензор". Подозреваемые задержаны.

Главарь группы (погоняло Моноид), ранее судимый за подобные ко-преступления, имеет характеристику 7, что далеко от идеала. Согласно аксиомам, Универсум гарантирует бесплатного алгеброида для данного процесса. Остальные элементы ранее не выходили за пределы Банахова пространства и отпущены под подписку о невычислениях.

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

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

среда, 6 апреля 2016 г.

Объявление (аренда квартиры)

Таки извиняюсь, личное, и объявление.

Сдам 2-х комнатную квартиру, Ижевск, район ГорСовета, 9 этаж, вид на Металлург.

Кухня вся (газ плита, микроволновка, холодильник), стиральная машина, пылесос, 2 раскладных дивана, интернет.

15тр + счетчики. На длительный срок(!). Депозит в размере 1 месяца, так как без риэлторов, то других платежей нет. Сильное желание, чтоб вы меня знали (и симметрично).

Таки не актуально. Всем спасибо.
















пятница, 4 марта 2016 г.

Scala

Обнаружил, что у меня здесь два черновика с таким заголовком. Оба удалил, пишу еще один пост про это.

Собственно, Scala is awesome. Оосам. За 2.5 года (чуть более чем) профессиональной (100% и свободное время) понимаю, что это что-то иное, чем ... язык.

В принципе, язык и есть способ мышления. Все еще поражает, что у меня есть рост (хотя вру, не поражает), но рост есть.

Начал отличать здоровую от нездоровой функциональщины. Пока у нас в коде есть 2-3 кб нездоровой функциональщины. Нездоровая - это когда ты и твоя команда не понимает, как оно работает. В общем, у нас есть немного shapeless с небольшими включениями HList-ов. Базовую концепцию понять не сложно, но у нас кусок нездоровой. В принципе, я понимал, что это можно сделать магией, спросил на StackOverFlow, и получил кусок магии. Суммарно 2-3 дня вкуривания, и ... не помогло.

Еще в 2-3 местах хочется scalaz.Functor.lift, но не критично. По факту хочется лифтинга с базовой функции на коллекцию, что еще внутри параллелизм был. Одного метода вручную должно хватить.

Еще у нас есть имплициты (неожиданно, правда?), очевидно, у всех есть. А еще есть имплицит, который из одного имплицита достает что надо. То есть такой рекурсивный имплицит на один уровень.

Еще у нас есть 4Тб сырых данных и 9.5 млрд строчек там. Это так, что б померяться. Правда, это вся история, а не за сутки.

Еще у нас нет null-ов. Вообще. Zero. Хотя NPE был на этой неделе, но там запрос в легаси БД, где джоиняться 10 таблиц (какие-то дебилы писали), и на выходе где-то пусто оказалось. Но дальше этого null-ы не пройдут. ScalaStyle проверяет, что в коде нет слова null. И точка.

Еще у нас нет var-ов. Лукавлю, есть. Есть два итератора, и как-то внутри итераторов без стейта вообще сложно, особенно, если он нужен. И еще в одном/двух местах, но там не я, и надо выпиливать.

Еще понимаешь, что дело не в языке, а в людях/головах. Бывает отвернешься, смотришь коммит, а там на тебя смотрит Try[Option[List[String]]]. Или null, или var, однажды вообще break торчал. А ты такой, берешь лопату, и говоришь: "Не надо так". Потом идешь в continuous integration и добавляешь правило, что оно само следило за порядком.

А однажды, я глазами обнаружил пласт копи-пасты, пришлось свой плагин для sbt писать, чтоб это безобразие контролировать.

Еще был кусок макроса. Но нашлась библиотека, которая состоит из этого макроса. Enum собирать в коллекцию. Тот же рефлекшн, только компайл-тайм.

Еще в одном месте доабстрагировались, что есть мини-OLAP, с иерархической агрегацией, и все это в N строчек кода. N - мало.

А еще я понимаю, что хвастаться - не хорошо.

А еще есть чудики, которые пишут, что язык ХХХ - говно, мы перешли на Go, и все стало круто. Другие, что компания, занимающаяся языком YYY произвела ребрендинг (поменяла название), что языку YYY - хана.

Из всего этого я понял, что мир не одномерен (читай, язык ХХХ - лучший), а как минимум трехмерен [команда, задача, технологии]. Но об этом кричат люди, которые даже не в команде.

В общем, не будьте плоскими. Можно считать это тостом.

воскресенье, 11 октября 2015 г.

О хорошем

Что такое "хороший программист". Мои 50центов.

Наверняка у вас в голове есть тоже какое-то определение. Есть еще всякие слова типа Lead/ведущий, в английском еще странная позиция уровня "Staff engineer", что в иерархии может быть довольно крутым (даже после lead).

Сейчас у нас импортный коллега в импортном офисе в linkedin выставил что он "директор по инфраструктуре и облачным решениям". По факту он единственный сис. админ. Директор - оно конечно звучит, но факт не отменяет.

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

Сейчас в нашей команде 3 человека. Можно выбрать любой титул для linkedin, все равно санитары его не читают. Если что, я им лучше про аппликативные функторы рассказывать буду, чем вице-президентом представляться.

Сейчас (на ближайщий год) мое определение "хорошего программиста" - использование подходящего уровня абстракции и способность переходить/опускаться/подниматься на нужный уровень.

Да, это довольно абстрактно.

Но это лучше чем "я руководил коллективом и 15 программистов", "в начале 2000-х я писал на COM+/драйвера для принтера". Очевидно, что есть куча специализаций, и сравнить вообще что-то просто бессмысленно. Опыт/знание/умение не численный показатель.

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

Есть куча нормальных задач, где надо опускаться сверху вниз. При условии, что вы это сами можете. Двигаться вверх обычно сложнее, и в задачах редко можно шагнуть на 1-2 шага вверх без сложностей.

Двигаться вниз на 2-3 шага довольно занимательно. Но дальше вы снова упретесь в абстракции. Либо там уже аксиоматика, либо абстракции, близкие к аксиомам. Можно опускаться в квантовую механику (заметьте, что "опускаться"). Понятие числа вообще сложно, тем более вещественного. А основания логики и философские основания математики вроде выглядят как "копание вниз", все равно упиратесь. Так что копание вниз и абстрагирование вверх одинаково сложно.

Разные уровни абстракции приводят к разным языкам. И не только в программировании. Порефлексируйте на эту тему самостоятельно.

Вообще, все вышенаписанное применимо в абстрактной форме к тем вещам, где есть абстракции. К землекопам, роющим троншеи для ГВС оно слабо применимо. Можно конечно, перейти из 2d в 3d, но дальше не получится. 

пятница, 2 октября 2015 г.

почти как в одной стране

Кстати, а откуда в числе \pi все есть?

Ну, иррациональное и трасцендентное. В \log{2}{10} как бы тоже, и как континуум других чисел, но в логарифме как-то иначе. А про \pi все говорят/бьют себя в грудь, будь то сами видели. Тут можно вспомнить  бородатый анекдот про Чака Норисса. Что тот в качестве пароля использует последние 8 знаков числа \pi.

Еще меня только на прошлой неделе осенило, что в числе \pi есть число \pi. Причем дважды (очевидно что больше ) ). "Легко видеть, что " если взять первые $n$ знаков числа \pi, то они с какой-то позиции содержатся. Предельный переход по $n$ (не совсем уверен, законно ли это).

Причем та копия, тоже содержит число \pi. Тут уровень рефлексии зашкаливает.

Это все рассуждения, при условии что в \pi содержится любая конечная последовательность.

А та наркомания от Рамануджана, где \sqrt (\pi * \ e / 2) = цепная дробь + гипергеометрический ряд. Оно вообще доказано, либо у Рамы много чего из сонника есть. Следуют ли отсюда какие-то свойства \e ?

Так же недавно еще наркомания в голову пришла. Возможно, многие уже в курсе, что 1+2+3+4+... = -1/12? Если нет, так вот знайте. Даже я знаю про 3 доказательства на уровне школы. Товарищи с МехМата сказали, что это вообще очевидно следует из Гамма-функции, но я не такая.

Так вот, говорят что физики это натянули на теории струн, и наша вселенная вообще 26 мерная, причем из этих -1/12 они взяли 12, помножили на 2 и еще добавили 2. Странные какие-то. Пусть, я своими глазами вообще только проективную геометрию вижу, да и об горячий чайник рукой обжигаюсь.

Если же паралелльные вселенные существуют, то в них тоже 1+2+3+...=-1/12, тогда если еще и поверить физикам и неведомым струнам, то пространство тоже 26-мерное. Мирок изоморфный нашему получится. Такой же, с инфляцией и ценами на гречку. А это несколько печалит. Хотелось бы что-то иное. Это, если конечно, физики нас со струнами не обманывают. А я только название знаю, и слишком доверчивая.


суббота, 22 августа 2015 г.

flashmob

1. Взять ближайшую книгу.
2. Открыть на странице 69.
3. Найти первое предложение — оно и описывает вашу сексуальную жизнь.
4. Поместить в дневнике вместе с этими инструкциями.
5. Не выбирать книгу, взять ту, которая ближе других в данный момент!

"Дополняя исследования параграфов 15 и 49, приведем еще все типы групп восьмого порядка."

ЗЫ. Больше полугода на столе лежит что попало. Бумажные медленно идут (

среда, 19 августа 2015 г.

scala-cpd, yet another scala copy paste detector

You could treat this post as ad. Because, literally it is.

I have realise that our code contains a little bit copy-pasted blocks. Code in Scala, obviously. So, I was looking for perfect working tools for it (at least, to find those blocks). I found only  two non-working  implementations. One is based on PMD (some classic tool for this topic), I cannot execute other variant because of elder sbt version. 

So... I write my own. It's sbt-plugin. 


The code is pretty simple. Scala 2.10 contains macros/run time aka ToolBox. That means, we have AST for free. After that we traverse tree and put all matched subtrees into dictionary (as strings). All matched substrees are blocks/functions_apply/vals/defs and so on. Yeah, and we don't care about comments, because ToolBox-parser perform only AST for code, not for comments.

If two subtrees are equal (syntactically, by _.toString) and  big enough, it's a problem. Houston. 

Fairly, first version is simple. Next version, I hope, would find val-renaming. It should be simple task while we work with AST, not with code-as-string. 

At least, we use it in out CI-process. For each commits, TeamCity execute task with this plugin, and check that count of copy-pasted-blocks is less or equal than for previous commit. 

It would be a big pleasure, if you also will use it.

PS. 3 years ago we use Simian. It's good enough, but it's not a AST, just strings.