Архив октября 2018

Про поиски виновных

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

Параметры контракта для очередного пуска рассчитывала одна из многочисленных “девочек”-аналитиков. Рассчитывала – громкое слово, так как в компании для этого существует установленная методика и табличка в Excel. Но что-то пошло не так – запуск оказался неудачным, и вместо того, чтобы положить страховую премию себе в карман, компания была вынуждена платить.

Кого там назначил виноватым Роскосмос – уже и не припомню, а вот девочку премии все равно лишили.

Про инновации

Вот в продолжение записи про “преподавание инноваций“:

Как утверждает авторша, идея родилась у нее во время работы над “проектом по предмету Экономика инноваций в Университете” (явно имеется в виду МГУ). Курс под названием “Экономика инноваций” читается зачем-то студентам-экономистам – а в результате получаем вот примерно это. В учебнике, конечно, написано, что

По словам директор бизнес-акселератора 500 Стартапов (из Силиконовой Долины) Дейва МакКлюра, ключевым преимуществом любого стартапа является не бизнес-идея, а именно команда, где человеческий ресурс имеет принципиальное значение.

- но кто из экономистов это читает? На выходе имеем совершенно наивную и непроработанную идею (я такие могу пачками под пиво рожать), отсутствие всякого представления о ее реализации, но зато – написанный по “правильному” шаблону бизнес-план, который, к сожалению, не находит никакого отклика даже в жюри конкурса “УМНИК”.

На выходе, разумеется, ноль без палочки и горькая обида на членов жюри, которые якобы “воруют идеи заявочников”.

Про кнопачки

Купил тут в Чип-и-Дипе “всякой твари по паре” – точнее, разнообразных кнопок для одного сравнительного теста. Среди прочего барахла взял китайских “аркадных кнопок” – и обнаружил, что внутри них стоят переключатели “типа Alps” (как их обозначают в среде клавиатурных маньяков):

arcade-button

Внутреннее устройство переключателя – почти стандартное для китайских и тайваньских клонов Alps, разве что подвижный контакт тут почему-то состоит из двух деталей (на Deskthority такой вариант не встречается):

alps-clone-internals

Очень похожие кнопки продаются на Aliexpress по цене что-то около 30-50 рублей за штуку (в зависимости от количества): https://ru.aliexpress.com/item/30/32886768751.html. Если вам зачем-то могут понадобиться китайские “клоны Alps” – то вроде бы годный вариант.

Да, стоит, наверное, предупредить, что надписи 16А/250V в прайсе ЧиДа верить не надо.

Дно пробито

В моем личном хит-параде криворуких уебанов обновление – установщиков автосигнализаций потеснили на второе место установщики автомобильных же GPS-трекеров.

Чуваки ставили какой-то “телематический терминал” (GPS-трекер с передачей данных по GPRS, тысячи их) на банальную ГАЗель. Казалось бы, что может быть проще, чем подключить этот терминал к питанию и проложить провод к антенне? Не надо подключать даже датчик уровня топлива или что-то в этом роде. Достаточно найти провод, на котором появляется +12 В после включения зажигания и “массу”. Тем более – это предстояло сделать в простой, как три копейки, карбюраторной ГАЗели выпуска 2001 года.

Но фантазия долбоебов не знает границ! Эти товарищи попытались найти “массу” в колодке замка зажигания, видимо, взяв тестер и прозванивая провода на предмет контакта с “массой”. Первым делом им попался провод, идущий к реле стартера. Ну что сказать – молодцы, мультиметром в режиме прозвонки пользоваться умеют. Собирают, накидывают на аккумулятор клемму…

…результат немного предсказуем – проскакивает громадная искра, ГАЗель начинает весело вертеть стартером. “Установщикам” несказанно повезло, что машина не стояла на передаче. Следующая попытка найти массу была более успешной – за массу приняли провод, включающий бензонасос и прочую такую фигню. Терминал вроде бы работает, только вот не обнаруживает включение зажигания, да и бензонасос жужжит постоянно – но это посчитали “не проблемой”.

gazelle402

А теперь вишенка на торте – даже в растиражированной в интернете цветной электросхеме ГАЗели “для тупых”, с картинками (специально для электриков с IQ ниже 70), довольно легко можно понять, что в колодке замка зажигания “массы” в принципе нет. Картинка кликабельна.

Если вам лень читать 100500 комментариев в фейсбуке…

…то с кратким конспектом ЭЭГ-гейта можно ознакомиться на хабре:

https://habr.com/post/427195/

И как водится – “история … вскрыла такие глубины, о которых многие и не подозревали, став из истории о технике историей о людях” – на хабре написали уже три с лишним сотни комментариев, многие из которых – живые иллюстрации к основным тезисам из поста.

Диаграмма моднявых buzzword’ов по состоянию на октябрь 2018

buzzwords

Обратите внимание, как лихо математику и статистику задвинули в графу Ignore, заменив “искусственным интеллектом” и “машинным обучением” и каким-то непонятным data science (”наука о данных”?). Потырено не с помойки, а аж из Harvard Business Review:

https://hbr.org/2018/10/which-data-skills-do-you-actually-need-this-2×2-matrix-will-tell-you

Чуточку про стартапы выскажусь

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

https://www.facebook.com/olartam/posts/2108799502503462
https://www.facebook.com/shperk/posts/10160889291945153
https://www.facebook.com/GagarinAleksandr81/posts/2331073720477747
https://www.facebook.com/olartam/posts/2109574195759326

Дело дошло до публикаций в робототехнических мурзилках:

http://edurobots.ru/2018/10/neuro-tb/

В комментарии понабежали всякого рода “федеральные тьюторы по робототехнике”, демонстрирующие полную некомпетентность в обсуждаемом вопросе, а заодно – Тимур Бергалиев, “генеральный директор Bitronics Lab” вместе со своим научным руководителем – Юрием Аммосовым. И вот что я хочу по этому поводу сказать.

Отечественная (подозреваю, что не только она) околообразовательная тусовка поражена какой-то нездоровой любовью к “студенческим стартапам”. Масса народа ездит студентам и выпускникам по ушам, заманивая их во всевозможные “стартап-акселераторы”, братские могилы стартапов вроде Сколково и прочие сомнительные места. К услугам выпускников, поддавшимся на пропаганду всей этой стартапщины – всевозможные гранты, фонд Бортника и еще масса организаций разной степени сомнительности. Получить какие-то ништяки от того же Сколково или Бортника можно фактически под неплохую дипломную работу.

С другой стороны – наверное, не стоит говорить о том, что “на выходе” в любом ВУЗе получается в лучшем случае “личинка специалиста”, к самостоятельной работе по специальности толком не подготовленная. “Лечится” это обычно попаданием в нормальные “рабочие” условия, отеческими пиздюлями от старших товарищей, ну и прочим жизненным опытом. Но юный стартапер выше всего этого! Он не желает работать на раздающего пиздюли дядю, а желает, как рассказали в вузовском спецкурсе по “технологическому предпринимательству” (краткий пересказ биографий Стива Джобса, Элона Маска и Элизабет Холмс), создать свой стартап и облагодетельствовать человечество в меру своего понимания.

Результат? Собственно, он перед вами – “генеральный директор” Bitronics Lab публично демонстрирует полную некомпетентность как в технических, так и в бизнес-вопросах.

PS Любителям же “студенческих стартапов” очень советую прочитать и осознать статью по ссылке:

https://www.nber.org/papers/w24489

UPD Генеральный директор Bitronics Lab написал в фейсбуке “признаю себя ослом”:

https://www.facebook.com/permalink.php?story_fbid=2197569037166465&id=100007401691419

Целый вагон холопов подвезли

holopy

И еще немного посмеяться

При непосредственном участии РОЦИТ, НИУ ВШЭ, АСИ и прочих ДЛБ целая команда методологов соорудила тест “цифровой грамотности” для школьников. Авторы так гордятся своей работой, что предлагают оценить ее всем желающим. Давайте тоже не будем оставаться в стороне – благо они сами об этом просят. Тест будет идти до 24 октября включительно и доступен по адресу http://dl.worldskills.ru/. Копирую инструкцию:

Тест бесплатный. Только требует регистрации. Надо ввести свой e-mail и после активации ссылки из письма заполнить данные – регион, город, дату рождения, школу класс. Потом в разделе Конкурсы появится наш тест. Когда тест проходят взрослые, я рекомендую писать “вне конкурса” в поле “учебное заведение”. Чтобы как-то потом в статистике это можно было отдельно отфильтровать.

Да, важное предупреждение – не пейте и не ешьте во время прохождения теста, можно подавиться от смеха на некоторых вопросах.

computer-literacy-test

ЭЭГ на Ардуине

Что-то мне в последнее время полюбился тег “запретите им” – так что продолжу.

Я не прошу оценивать соответствие этого поделия IEC 60601 – но покажите мне в этом устройстве гальваноразвязку, а заодно – скажите, кто будет отвечать, когда подключенный к ардуине “пользователь” схватится рукой за батарею.

К предыдущим двум записям

Еще одна часто игнорируемая область знаний “настоящего” программиста – умение оценивать необходимые для решения поставленной задачи вычислительные мощности. Ну да, нейросетка для MNIST на микроконтроллере за 7 $ на первый взгляд – это круто. Но с другой стороны – помните такие древние-древние наладонники Palm?

palm-pilot-1000

У них было поле для “рукописного” ввода букв и цифр – правда, с использованием упрощенного алфавита Graffiti, но как минимум цифры там были довольно похожи на “настоящие”. При этом распознавание рукописного ввода с тачскрина прекрасно жило даже на самых дохлых Palm с 128 кБ ОЗУ и 512 кБ ПЗУ (в которых помещалась операционная система и кучка необходимых приложений). Тактовая частота процессора составляла всего лишь 16 МГц. Согласитесь, что то же самое распознавание цифр на микроконтроллере с тактовой частотой под 100 МГц, 320 кБ ОЗУ и 1,5 Мб Flash уже не выглядит невероятным прорывом?

А модное нынче распознавание речи? В один голос Google, Amazon и Яндекс рассказывают нам о невероятной сложности их “голосовых помощников” – мол, “Чтобы обработать речь, нужно сделать много расчетов, поэтому то, что вы говорите, передается на серверы Яндекса и распознается там.” При этом внутри “умной колонки” стоит неслабый процессор (неназванный Quad-core ARM Cortex-A53 @ 1 GHz (12000 MIPS)), 1 Гб ОЗУ и 8 Гб ПЗУ. Неслабо так, да? А тем временем, роясь в куче хлама, я недавно нашел пиратский диск конца 90-х с кучкой программ для распознавания речи – и я точно помню, что что-то оттуда работало на моем тогдашнем Pentium 120 МГц с 16 Мб ОЗУ и Windows 95, и вполне неплохо.

Вот вроде бы кажется, что “большие данные”, “нейросети” и все такое – это невероятно сложно и доступно только “технологическим гигантам” – но с другой стороны, посмотрите на исследования в области искусственного интеллекта и машинного обучения конца 80-х. Результаты могут быть довольно впечатляющими даже по нынешним временам, а бюджеты и вычислительные мощности даже в самых продвинутых проектах – смешные. Поневоле задумаешься – а вдруг всякие “умные колонки”, голосовые помощники, система Android и так далее – это просто инструменты для сбора данных? Во всяком случае, это укладывается в логику статьи “For Google, you’re neither the consumer nor the product. You’re a data point”:

https://rakhim.org/2018/09/you-are-a-data-point/

Ну и естественно, стоит задуматься, как все это сочетается с представлениями о приватности и безопасности.

Суровый программизм

Вот читаю я, допустим, статейку про проект uTensor – совместимую с TensorFlow реализацию нейросетей для ARM Cortex M3 или M4.

https://towardsdatascience.com/why-machine-learning-on-the-edge-92fac32105e6

Штука прикольная – пусть и на “топовых”, но все-таки на недорогих и довольно доступных микроконтроллерах позволяет, например, распознавать рукописный ввод:

Ну, со специалистами по “обычному” машинному обучению все вроде бы понятно – трехмесячные курсы и вперед, можно даже других учить (я почти не шучу – во всяком случае, очень похоже, что вот такие популярные “курсы для начинающих” этими вот “трехмесячными специалистами” и сделаны). Но если задуматься – а что нужно, с точки зрения фундаментального образования, чтобы более-менее понимать каждый из элементов этой системы?

Ну, для начала – математика. Для понимания хотя бы MIT’овского учебника по Deep Learning желательно иметь представление о линейной алгебре, теории вероятностей, возможно, о каких-то началах функционального анализа. Да, некоторые отрывочные сведения из этих дисциплин приведены в первой части этого учебника (так часто делают в американских учебниках – так как нет гарантий, что слушатели курса по машинному обучению перед этим действительно прослушали несколько курсов по математике) – но их явно недостаточно. Если ориентироваться на программу мехмата, например – это 2-3 курс, если безжалостно ужимать – то все равно необходимо 3-4 семестра одной только математики.

Программирование тут не менее суровое. Даже если предположить, что с Python (в объеме, необходимом для TensorFlow) человек, умеющий немного программировать на C, сможет разобраться самостоятельно – все равно здесь, как и в любом проекте с использованием микроконтроллеров, требуется отличное знание C и даже немного – C++ (даже если говорить о нем, как о C with classes – все же нужно понимать “цену” тех или иных возможностей C++). Не знаю, стоит ли в обязательные общие требования к программисту включать знания классических алгоритмов – но в целом в критичных к производительности задачах это оказывается само собой разумеющимся требованием. Тут у нас нет многоядерного процессора и гигабайтов оперативки. В “профессиональном обучении” программиста это где-то год.

Дальше – микроконтроллерная специфика. Да, “входной порог” в программирование для микроконтроллеров сейчас (благодаря все той же ARM mbed) сводится “до уровня базовых знаний C/C++ и электроники в масштабе «подключить светодиод в нужной полярности»” (c) – но для понимания штук типа CMSIS-NN желательно уже иметь представление об архитектуре ARM, всякого рода оптимизациях, DSP-инструкциях (зря что ли мы берем Cortex-M4?) и прочей такой вот низкоуровневой ерунде – возможно, вплоть до программирования на ассемблере. Электроника, нужная для такого проекта, разумеется, тоже довольно далеко ушла от “подключить светодиод в нужной полярности”.

В общем, если представить учебники по каждой из дисциплин – тут “вырисовывается” книжная полка с десятком книжек страниц по 300 каждая (это минимум – некоторые особенно “хорошие” учебники по некоторым разделам computer science приближаются к полутора тысячам страниц). Можно, конечно, возразить с аргументами в духе разделения труда – мол, не обязательно специалисту по deep learning знать нюансы архитектуры ARM, да и математика ему не особо нужна, и вместо одного “универсала” тут можно взять трех-четырех выпускников трехмесячных курсов. Но с другой стороны – над ними все равно должен быть какой-то руководитель – который должен иметь представление не только о технических аспектах, но еще и направлять процесс разработки.

И заметьте – все это только для того, чтобы можно было пальчиком провести по тачскрину, а на дисплее отобразилась бы введенная цифра. Но, конечно, всегда есть и более простой путь – “еще три года назад Антон был простым раздолбаем, а сегодня он Senior Developer в Luxoft” (c). Сеньер-формошлепом, наверное, быть неплохо :)

Технический луддизм

luddism

Наткнулся на днях на статейку (прошлогоднюю, конечно, я же тормоз) про federated learning:

https://ai.googleblog.com/2017/04/federated-learning-collaborative.html

Если немного очистить ее от AI-шной шелухи и заявлений о том, как Google улучшает User Experience – то содержание сводится примерно к следующему: приложение Gboard (стандартная андроидовская клавиатура) анализирует все (или практически все) сообщения, пересылаемые между пользователями, немного их обрабатывает (вот для чего “бюджетным” устройством на Android считается смартфон с четырехядерным процессором и минимум 2 Гб оперативной памяти), и результаты обработки пересылаются в Google (вот кто жрет ваш трафик) – чтобы там могли немного улучшить качество “подсказок” Gboard. Говоря еще проще – в Google читают всю вашу переписку :)

А как от всего этого счастья отказаться, не уходя жить в тайгу к староверам?

Внезапно осознал

namespace std в C++ – это не сокращение standart, это сокращение sexually transmitted disease – заболевание, передаваемое половым путем.

Вот подумалось тут

Разбирая непрочитанные закладки в браузере, наткнулся на “заложенную” статью о Progressive Web Applications. Я некоторое время назад задумался о простеньком веб-приложении, умеющем работать в “оффлайне” – точнее, способном сохранить введенные в форму данные и затем синхронизировать их с сервером, так что краем глаза увидев “рекламу” концепции Progressive Web Application, подумал – это как раз то, что нужно! Вот сегодня наконец-то руки дошли до погуглить, что это такое и как они делаются – и если честно, я немного офигел.

Идея, если подумать – очень простая. Немалая часть “приложений” для Android или iOS – это несложные обертки над каким-нибудь API, работающим поверх обычного HTTP. Некоторые вообще не парятся и отрисовывают весь пользовательский интерфейс в WebView или как он там называется, и даже реализуют “содержательную” часть приложения на браузерном JavaScript. Так вот, зачем плодить такого рода “приложения”, если можно сохранить на устройстве “главную страницу” сайта (или “приложения”) вместе с необходимым JavaScript и прочими ресурсами (CSS, картинки и так далее)? PWA – это небольшой набор средств, позволяющих добавить специально оформленную веб-страничку в список “приложений” на устройстве с Android или iOS. К этому добавляется возможность зарегистрировать в системе некоторый код на JavaScript для фонового выполнения – эта штука называется ServiceWorker – и готово!

Примерно тот же набор фактов вперемешку с основными принципами разработки “прогрессивных веб-приложений” излагается обычно на паре страниц мелким текстом, засоренных “птичьим языком” про “rich mobile experience”, “new level of quality” и тому подобную ерунду. В худшем случае все сводится к этой самой ерунде, а технические детали опускаются совсем.

Вот мне интересно – в других, отличных от веба разделах того, что обычно называют “информационными технологиями”, отношение количества вот такого буллшита к техническим деталям обычно немного ниже. А почему?

Для состоятельных парней

Департамент образования города Москвы проводит среди учителей олимпиаду по трем предметам: математике, физике и химии. Среди требований к участникам – “Ежемесячная заработная плата (сентябрь – декабрь) не менее 100 тысяч рублей”.

Пруфлинк: https://temocenter.ru/deyatelnost/konkurs-sbg.html

Давить нищебродов!

Highly likely

Новые доказательства преступлений “Петрова” и “Боширова” в Солсбери:

higly-likely

Мнение нормального человека об этой вашей ардуине

Хочу заметить – пишет не “электронщик” ни разу:

Arduino тупиковая ветвь учёбы. Счётные палочки мейкерства. Есть чуваки, умудряющиеся этими палочками пейзажи рисовать, зажав коленом, но такой фанатизм не для всех.

https://felixit.blog/2018/10/02/pro-arduino/

О профессиональной этике

Полистал тут книжечку Modern Assembly Language Programming with the ARM Processor by Larry D. Pyeatt, в частности, главу про арифметику с фиксированной запятой. В этой главе упоминается про известный случай с заглючившей системой Patriot, а в одном из упражнений предлагается обсудить это, исходя из положений Software Engineering Code of Ethics And Professional Practice.

Интересно, а многие ли отечественные программисты слышали про такой документ?

Code of Conduct здорового человека

Крайне рекомендую к внедрению в опенсорсных проектах:

https://github.com/unwireddevices/RIOT/blob/loralan-public-2018.07/CODE_OF_CONDUCT.md

UPD Не все понимают, чем он так хорош – смотрите в сравнении с “Code of Conduct курильщика”.