Про кнопачки

Купил тут в Чип-и-Дипе «всякой твари по паре» — точнее, разнообразных кнопок для одного сравнительного теста. Среди прочего барахла взял китайских «аркадных кнопок» — и обнаружил, что внутри них стоят переключатели «типа 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

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

При непосредственном участии РОЦИТ, НИУ ВШЭ, АСИ и прочих ДЛБ целая команда методологов соорудила тест «цифровой грамотности» для школьников. Авторы так гордятся своей работой, что предлагают оценить ее всем желающим. Давайте тоже не будем оставаться в стороне — благо они сами об этом просят. Тест будет идти до 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 читают всю вашу переписку :)

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

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

Разбирая непрочитанные закладки в браузере, наткнулся на «заложенную» статью о 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

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

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

Хочу заметить — пишет не «электронщик» ни разу:

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 курильщика».

Быдлоэлектронщики

make-me-unsee-it

Истратив законный выходной на борьбу с «творчеством» (на картинке — если что, я не прикасался к этой плате, ко мне она уже попала в таком виде) одного такого товарища — задумался, а какие признаки просто кричат о том, что связываться не стоит? Навскидку родил такой вот список:

— использование модулей типа Arduino, Blue Pill и им подобных в качестве составных частей изделия;
— закупка компонентов на Aliexpress;
— нежелание пользоваться системами «сквозного» проектирования схемы и печатной платы;
— кустарно изготовленные печатные платы;
— монтаж с применением припоя ПОС-61 и флюса ЛТИ-120.

Что еще добавить?

Что имели в виду китайцы?

more-than-one-partner

Как перевести с chinglish фразу «You’ll be in love with more than one partner»? «»Любая телка даст» или «Выебем, по кругу пустим»?