Студенты накатали анонимку

Студент из вот этой «заметки» сильно обиделся и накатал на меня анонимку:

http://shura.luberetsky.ru/2022/02/14/kaznit-nelzya-pomilovat/

Читал и ржал!

PS Я, разумеется, не отрицаю своих проебов, как руководителя проекта — но если фигурант истории хочет «обоснованной критики» — он ее получит в любых количествах.

Про поддержку айтишечки и все такое

Почитал тут пару смешных материалов на тему «все айтишники уезжают в Грузию, надо срочно спасать отрасль!» — вот, например, почти эталонный образец:

https://perm.rbc.ru/perm/freenews/624aec609a7947efc2f45d95

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

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

Хрущев ввел процентные нормы: сколько нужно принимать в вузы выходцев из рабочих, заявил, что нужны рабфаки, что нужно гнать в вузы рабочих. А в школах ввели 11-летнее обучение, и два дня в неделю ученики должны были проходить практику на производстве. И вот Кронрод вдруг говорит: Мы можем воспользоваться этим моментом, чтобы создать математические классы. И мы объявляем, что должна быть производственная специализация – «программирование», и мы будем преподавать математику. Два дня в неделю в таких классах было отдано только математике и программированию.

Да и в целом, если подумать — то «программист» — это нормальная, хорошая рабочая специальность — осваивается на базе 9-10 классов за два-три года, интеллектуальные усилия сравнимы с таковыми у квалифицированного станочника, и в целом опыт так называемых «вайтишников» показывает, что никаких уникальных способностей для нынешних массовых айтишных профессий не нужно. Более того, всякие попытки изобразить «высшее программистское образование» обычно скатываются в изобретение заново среднего профессионального образования по специальности 230115 — «Программирование в компьютерных системах«.

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

А какие еще могут быть аргументы в пользу «поддержки» айти как отрасли? Аутсорсинговое айти приносит в страну валюту? Пожалуй, этот аргумент мог бы работать для Индии, Белоруссии или Украины, но для России с ее внушительным внутренним рынком — лишь частично (и при этом все равно сохраняется ориентированность айтишных зарплат «на Запад»). Да и в целом экономический эффект от инвестиций в айтишечку — так себе, в плане включенности в длинные производственные цепочки айти сродни… пожалуй, какому-нибудь сбору клюквы (нет, я не о том, что показывают по Discovery, я про то, как это делается у нас на болотах Тверской области).

Собственно, экономически «айти-отрасль» по своему уровню развития находится где-то в лучшем случае в районе раннего капитализма, с «распределенными мануфактурами» и прочей атрибутикой примерно XV века. Не надо строить иллюзий, что компьютеры, серверы, сетевое оборудование — это сложный продукт (пост)индустриальной эпохи, для «айти» они имеют примерно такое же значение, как пластиковые ведерки и резиновые сапоги для того самого сбора клюквы. Что ведерки, что компьютеры делают где-то на фабриках в Китае, и на российскую экономику это не влияет примерно никак.

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

Как размножаются фрезеры, часть следующая

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

Пока ко мне едет «доска для смузи» — точнее, Smoothieboard — погонял двигатели от того же фрезера (обычный китайский 3018 с GRBL), на котором пилил детальки.

Будни станкостроения

Когда начинаешь свой радиогубительский путь, и осваиваешь пайку DIP-микросхем 40-ваттным советским паяльником, то кажется, что это все пиздец мелко. Разъемы с шагом 0,8 мм кажутся вообще невозможными для монтажа (но с третьего раза, через кровь и слезы, все-таки осиливаешь). Потом плавненько переходишь с изготовления плат «лазерным утюгом» на заказ их в Резоните, на SMD-монтаж — сначала 0805 кажется страшноватым, а потом начинаешь ставить компоненты типоразмера 0603, микросхемы в TQFP с шагом сначала 0,8, а потом и 0,65 мм — ну и логичным образом доходишь до деталек с шагом выводов 0,4 мм — nRF52 те же. Примерно в этот же момент понимаешь, что руки от постоянного пьянства дрожат, да и начинаешь какие-то слегка серийные устройства делать — и естественным образом хочется установщик для SMD.

В общем, решился наконец-таки собрать станочек для OpenPnP — вот такой:

https://hackaday.io/project/9319-diy-pick-and-place

Как совершенно верно говорил [info]mbr, фрезеры именно так и размножаются (да, механика расстановщика очень похожа на ЧПУ-фрезер).

DipTrace начал за Украинушку топить

Напомню, что пиратство в военное время называется каперством, а лицензионный ключ для DipTrace 4 версии на 4 слоя и 1000 выводов — вот:

Имя пользователя: Для некоммерческого использования
Регистрационный код: H2W2-6K9A-PS2F-H3L5-SSW1

Денег никому никаких платить, естественно, не нужно.

Продолжу набрасывать

И снова на злободневную тему, непосредственно связанную с военной операцией на Украине — но для начала прочитайте материал под заголовком The Wargame Before the War: Russia Attacks Ukraine. Если коротко — то чуваки «отыграли» сценарий российской операции на Украине, при этом местами действуя куда более «жестко», чем это происходит в реальности. Скажем, стадия «shaping fires» у любителей варгеймов была куда длиннее, чем в реальности. «Shaping fires» в данном случае — это удары по военной инфраструктуре, то, что мы видели во всех тиктоках в первые дни. Помните все эти ролики с зеваками и их воплями — «Смотри, смотри, ракета, ща по вон тому складу ебанет!»?

Но на что стоит обратить особое внимание — так это на то, что сейчас воюют две армии, имеющие оружие совершенно разных поколений. Украина, по большому счету, так и осталась с вооружением позднесоветских времен, когда «рулили танковые клинья и ковровые бомбардировки». Россия, напротив, в первые же дни продемонстрировала две вещи: наличие высокоточного оружия и умение его применять — при всей массированности ракетных ударов неделю назад попадания в гражданские объекты были скорее случайными. Не знаю, применимо ли тут слово «гуманизм» — но действия ВС РФ полностью укладываются в требования Женевской конвенции — точнее, «Дополнительного протокола I» 1977 года, а точнее, статьи 57 из нее, цитирую:

те, кто планирует нападение или принимает решение о его осуществлении:

а.1) делают все практически возможное, чтобы удостовериться в том, что объекты нападения не являются ни гражданскими лицами, ни гражданскими объектами и не подлежат особой защите, а являются военными объектами в значении статьи 52, пункт 2, и что в соответствии с положениями настоящего Протокола не запрещается нападение на них;

а.2) принимают все практически возможные меры предосторожности при выборе средств и методов нападения, с тем чтобы избежать случайных потерь жизни среди гражданского населения, ранения гражданских лиц и случайного ущерба гражданским объектам и, во всяком случае, свести их к минимуму;

а.3) воздерживаются от принятия решений об осуществлении любого нападения, которое, как можно ожидать, вызовет случайные потери жизни среди гражданского населения, ранения гражданских лиц и нанесет случайный ущерб гражданским объектам, или то и другое вместе, которые были бы чрезмерными по отношению к конкретному и прямому военному преимуществу, которое предполагается получить;

Кстати, по той же причине мы не видим и штурмов городов — потому что превращать Киев или Харьков в Мосул или Фаллуджу явно никто не хочет. Последняя после «освобождения» выглядела примерно так:

Сравнивая это с действиями украинской армии на Донбассе в 2014-2015 годах, когда «нормальным» считались обстрелы городов ствольной артиллерией или даже «Градами» — в общем, получаем вполне однозначные выводы. Разумеется, связано это прежде всего с тем, что как у Украины на момент распада СССР не было современного высокоточного оружия, так и не появилось — не считать же таковым опять же древнюю советскую «Точку-У», опять же, не могу не прочитировать один чатик — «баллистическую ракету с ебейшим КВО, и в силу этого КВО — с ебейшей башкой, компенсирующей относительно низкую точность»?

А ведь современные ракеты — это весьма серьезный хайтек, от «механики» и до алгоритмов управления и математики, эту точность обеспечивающую. Это не только «баллистика», это еще и системы навигации — и инерционные, и спутниковые, и обработка этих данных — а точность у современных российских ракет такая, что в принципе ими довольно прицельно могут выстрелить по конкретному подъезду большого административного здания. Таким военным хайтеком, в принципе, обладает всего несколько стран — и Россия в их числе. Не надо выебываться на Россию, может прилететь.

Шуточки с двача обсудим завтра, а тем, кто желает подготовиться к срачу, предлагаю прочитать IEEE Software Engineering Code of Ethics, чтобы срач был предметным.

Маленький наброс про инновации

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

Начну с простого — получение «легкодоступных» грантов вроде бывшего фонда Бортника или сколковского «минигранта» — это способ надежно загубить карьеру молодого специалиста на самом начальном ее этапе. Почему? Сумма этих грантов (у Бортника — 1 миллион рублей, у Сколково — 5) может показаться большой, но пресловутый «инновационный бизнес» на нее не построить, первый же наемный сотрудник покажет вам, с какой скоростью она уйдет на ФОТ. Какие-то «исследования и разработки» вести на эти деньги просто невозможно — но на какую-то вялотекущую и бессмысленную деятельность хватает, в компании двух-трех единомышленников можно просуществовать в режиме «на пиво хватает вроде» пару лет.

Да, «грантополучатель», по мотивам курсовой или дипломной работы которого сделан весь стартап, эти два-три года может называть себя директором инновационной компании, резидента Сколково (с юридическим адресом вроде «Сколково, Большой Бульвар 42с1, комната 1488, место в коворкинге слева у окошка») — но через два-три года грант проеден, да и хочется нормальную работу найти — и тут внезапно наступает прозрение, что никому он со своим «стартапным» опытом не нужен, как специалист он весьма слаб, да и HRы прямым текстом говорят — опыт ваш нерелевантен, вы в той фирме учредителем были, могли себе любую должность нарисовать.

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

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

Поскреби иного такого «инноватора» — и выяснится, что все новое и «прорывное» в его проекте сделано какой-нибудь скучной и неинтересной фирмой вроде Analog Devices или Texas Instruments, а без них он не инноватор вовсе. Видел на днях плач очередного стартапера о том, что из-за санкций он не знает, как будет покупать «передовые западные микросхемы» — но собственно, на такие заявы хочется достать бакелитовую лампу, направить свет в глаза и зверски орать что-то в духе:

— Где? Где инновации, блядь? В этой микросхемке? Кто ее делает? Maxim? TI? А твоя работа в чем? Ты героически купил у Analog Devices детальку и применил ее в строгом соответствии с даташитом? А нахуя тебе гранты давать за то, что любые китайцы делают в товарных количествах? На что деньги потрачены, сука?

Заодно вот это «незнание», как жить дальше без поставок компонентов, выдает полную, стопроцентную оторванность юного стартапера от индустрии. В этой самой индустрии , разумеется, тоже все пребывают в некоем ахуе — но кто-то уже набирает телефон «своего человека» в Шенчжене или Гонконге, а кому-то представители дистрибьютора прямым текстом говорят: «Да, вы под санкциями, но смело открывайте юрлицо в Армении или Казахстане, MILFSPEC-компоненты мы поставить, конечно, не сможем, но берите industrial, они ничуть не хуже».

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

Если бы я был циничной мерзкой сволочью

Я бы еще часов в 6 утра объявил бы о сборе средств в благотворительный фонд для хэроiв ВСУ, а сейчас бы искал способы вывести средства и приобрести паспорт Гондураса. А че, можно даже устав фонда написать, а потом с совершенно честной рожей сказать — ну извините, не вышло, объект благотворительности прекратил свое существование, во всем виноват, естественно, Путин.

Кстати, про выборочный пацифизм

Вот тут в интернетиках пишут «нет войне» и даже собираются как-то по всякому протестовать. Вне интернетиков — собирают подписи под разного рода обращениями.

Так вот, что-то мне подсказывает, что сегодняшним пацифистам и подписантам обращений все было похер и в 2014 году (Донбасс), и в 2003 (Ирак), и в 1999 (Югославия) году (не говоря уж о многочисленных конфликтах всех со всеми на Ближнем Востоке) — так что пацифизм в их исполнении превращается просто в выражение неодобрения режиму, который сам по себе им не нравится. Больше скажу — многие при указании аналогий начинают вертеться, буквально переходя в режим «это другое, понимать надо». Против войны как таковой большинство сегодняшних (24.02.2022) ситуационных пацифистов не возражают, если бомбят «кого положено».

Примерьте это на себя — считаете ли вы, что надо было «обуздать агрессора», когда украинская армия обстреливала Донецк и Луганск? Когда американцы бомбили Белград и Багдад? Надо ли надавать по рукам израильской военщине? Не родился ли ваш пацифизм в феврале 2022 и не умрет ли год-два спустя, когда под раздачу попадет кто-то другой?

А вообще на половине авторов «обращений» клейма негде ставить, и подписывать рядом с ними какие-то документы — откровенный зашквар.

Минутка конспирологии

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

А теперь — истинная конспирология. Мир сейчас весело движется к очередному экономическому кризису, и задача любых правительств — списать на кого-то другого свои проебы в экономике. Ковид как-то поднадоел, да и списывать на китайский насморк образца 2019 года долларовую инфляцию в 10-15% в 2022 году как-то уже некомильфо. И тут — глядите, какой шанс подвернулся!

Один австралиец в твиттере уже советует следить за новостями (нет, не про Украину, она вообще мало кого должна волновать) — очень много неприятных вещей, плохой финансовой отчетности и прочего такого треша сейчас пройдет незамеченной, пока мир следит за высокоточной демилитаризацией Украины. Ну и да, напомню, что ебанет по всем — вон уже Байден предупредил, что «экономика США понесет потери от антироссийских санкций».

Привет новому мировому кризису, короче.

И еще про фрезер

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

Для начала — где взять? Сайт makercam.com, где лежала программка, давно сдох, более того, программка написана на Flash, который петушары-программисты объявили «устаревшим» и выпилили его поддержку отовсюду. К счастью, есть еще archive.org, где можно взять файл swf:

https://web.archive.org/web/20210128233629/https://www.makercam.com/makercam.swf

Для его запуска можно воспользоваться Flash Player Projector — официальным инструментом для «отладки» флешовых мультиков и прочей такой фигни.

Между прочим, исходники MakerCAM лежат на гитхабе — так что если кто очень хочет — можно на базе этого что-то более нормальное и «современное» запилить.

Итак, первым делом готовим svg-файл с «чертежом» — точнее, контурами тех частей детали, что мы будем как-то обрабатывать. Для примера возьмем что-то наподобие вот этой детали — заметно сложнее вчерашней, хочу сказать!

Рисуем что-то вроде эскиза в svg; особые эстеты могут использовать полноценные CAD, но тут достаточно буквально чего угодно. Я пока не смотрел на размеры, возможно, придется их как-то подгонять, так что просто для демонстрации сделаем так (я вообще ручками этот SVG нарисовал):

Кстати, открывая svg в MakerCAM, обязательно проверьте, сколько у вас там точек на дюйм получилось, иначе можно здорово облажаться! Да, и не забудьте сразу переключиться в метрическую систему.

В русскоязычном «руководстве» совершенно не описана операция «выборки» внутри контура — но делается она просто, выделяем границы, жмем в меню CAM-Pocket operation и вводим параметры. Четыре отверстия по бокам просто просверлим, а для центральных сделаем еще две выборки. После нажатия на calculate all наша деталь будет выглядеть примерно так (галочку view cuts ставить не надо):

Наконец, надо сделать еще одну вещь, о котором в русскоязычном руководстве совсем забыли — выделяем самую внешнюю траекторию (которая отделит нашу деталь от фанерки) и выбираем пункт меню CAM-Add tabs to selected. Он позволяет при фрезеровке внешнего контура оставить связки, соединяющие вырезаемую деталь с заготовкой. Важно! В программе есть небольшой баг, из-за которого последний пункт, высоту этой связки, надо указывать не в сантиметрах, а в миллиметрах — несмотря на подсказку слева.

После всего этого экспортируем получившееся безобразие в G-код и смотрим любым просмотрщиком (например, я взял для этого Candle):

Поеду в Леруа за фанерой.

Технику безопасности при работе на фрезерном станке знаю, как свои три пальца!

Вот, допустим, есть у меня китайская игрушечная ЧПУшка типа 3018 — примерно такая:

И, допустим, хочу я сделать на ней вот такую примерно детальку из фанеры:

Я, конечно, могу написать G-код и ручками, сложной геометрии там нет, но вообще хотелось бы запихнуть модель из CAD-а в специально обученную программку и получить требуемое. Вопрос: как такая специально обученная программка называется и чем в среде любителей китайского говна с ЧПУ положено пользоваться?

Как же я люблю алиэкспресс

Вот, например, продают там некий SMD-расстановщик — конструкция уровня «продвинутый любитель», но нечто подобное многим интересно:

https://aliexpress.ru/item/1005002328161355.html

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

https://www.crowdsupply.com/citrus-cnc/simplepnp

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

Вот еще вопрос про этот ваш embedded

Есть у нас в России довольно немалое количество контор, занимающихся серьезным программированием для встраиваемых систем всех видов, цветов и размеров — от мелких смешных фирмочек в два с половиной человека до гигантов с сотнями программистов типа Инкотекса или Ителмы. Так вот, глянул я на современных студентов — и малость офигел. Как бы не секрет, что можно закончить считавшийся в прошлом приличным ВУЗ, будучи закоренелым ардуинщиком — слышал о таких прецедентах в Бауманке и в МИЭМе (этим даже делился).

В чем беда? «Ардуинщик» от нормального программиста встраиваемых систем отличается тем, что его основные приемы работы сформированы убогим детским конструктором, а многие «полезные приемы» из мира Arduino — это попытки криво и косо эти ограничения обойти. Нет в Arduino нормальных таймеров (нет, не рассказывайте тут про TimerOne — он только на AVR поддерживается)? Не беда! Запихнем программу в loop и будем проверять значение, которое возвращает функция millis(). Совершенно отсутствует у «ардуинщиков» понимание того, что в любой приличной встраиваемой системе рано или поздно прорастает полноценная многозадачность (да, некоторые очень продвинутые притаскивают на Arduino FreeRTOS — но это уже первый шаг к пониманию того, что ардуина не нужна), полностью нет «многопоточного» мышления (а оно нужно даже в том случае, если вы активно используете прерывания — даже без RTOSа). Сама по себе убогость Arduino провоцирует написание кода, местами идущего «поперек» принятых в нормальном программировании для микроконтроллеров вещей. «Сообщество Arduino», которое так любят фанаты «платформы», превращается в этом случае в настоящее «ведро с крабами» — новичку быстро объясняют, что нечего и пытаться вылезти за пределы «платформы», так и надо жить с убогой IDE, примитивным hardware abstraction layer и китайским наколеночным конструктором.

Вот так, например, в мире Arduino принято бороться с дребезгом кнопки (ну есть еще библиотека GyverButton, но это еще более страшно) и передавать значения из прерывания:


char outputState = 0;
char lastState = 0;

void loop()
{
/* Skipped some code */
  // Now we can publish stuff!
  if (outputState != lastState) {
    lastState = outputState;
    Serial.print(F("\nSending state val "));
    Serial.print(outputState, BIN);
    Serial.print("...");
    if (! onoffset.publish(outputState)) {
      Serial.println(F("Failed"));
    } else {
      Serial.println(F("OK!"));
    }
  }
}

void handleInterrupt() {    //works when button pressed
  static unsigned long last_interrupt_time = 0;
  unsigned long interrupt_time = millis();
  if (interrupt_time - last_interrupt_time > 200)
  {
    if (outputState == 0) {
      outputState = 1;
      digitalWrite(LED, LOW);
    }
    else {
      outputState = 0;
      digitalWrite(LED, HIGH);
    }
  }
  last_interrupt_time = interrupt_time;
  delay(100);
}

Покажите это знакомым программистам встраиваемых систем, пусть они ужаснутся.

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

Казнить нельзя помиловать

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

Где-то месяц назад wannabe-программисту встраиваемых систем была выдана не очень сложная задача — разобраться чуть-чуть с сетевым стеком 6LoWPAN over BLE в RIOT OS, немножко автоматизировать его работу и все такое прочее.

Три недели назад чуваку был задан вопрос: все ли просто, все ли понятно, нет каких-либо вопросов? Ответ — разумеется, все просто, все понятно, вот прямо сейчас все сделаю!

Еще неделю спустя задача не выполнена, зато чувак объявился с великолепной идеей — а давайте перейдем на mbed OS, уж там-то все точно просто и понятно, вот даже API References and Tutorials подробные есть (но работает это поверх «обычного» IEEE 802.15.4, а не моднейшего BLE)! Это уже не «звоночек», это гораздо хуже — но в общем сроки пока не горят, ничего ужасного не произойдет, если он недельку потыркается в mbed, нужного там не обнаружит и с позором вернется туда же, откуда начал.

Так и получилось — после чего я устроил грандиознейший разъеб в духе «Вы три недели работали, что было сделано? Ничего? А вы код вообще смотрели, или надеялись все в последний вечер сделать?», пообещал в случае повторения устроить аджайлофашизм с дейликами каждое утро, и выдал новую задачу — благо приближался некоторый «промежуточный» дедлайн, где хорошо было бы показать хоть какие-то результаты.

В 0:22 в ночь перед небольшим «интеграционным тестированием» системы в чатик прилетает вопрос в духе «а как какать»? По-хорошему, такой вопрос должен был возникнуть еще четыре недели назад — но не будем о старых обидах. Тут, конечно, повезло, что я чатик еще читал — так что в 4:44 в гит-репозитории проекта появилось решение где-то половины той задачи, состоящее из какой-то адовой копипасты и собственного кривого кода arduino-style.

В принципе, чел сам кузнец своего счастья — и накопленные за месяц 4 часа работы ему еще аукнутся, но хуже другое — по факту на данный момент, за 24 часа до демонстрации промежуточных результатов, имеем абсолютно неработоспособную часть системы, показывать собственно и нечего. Разумеется, героическим ударным трудом (в основном моим :) ) работоспособная демонстрашка завтра будет — но хотелось бы узнать, в каком месте поставить запятую в заголовке.

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

Дети, изучайте ардуину

С «умной теплицей» на ардуине вы можете сделать очень многое:

— получить дополнительные баллы к ЕГЭ и поступить в престижный ВУЗ на востребованную околоайтишную специальность;
— поучаствовать во всяких хакатонах и конкурсах для студентов;
— защитить в ВУЗе на отличную оценку «проект», курсовую и дипломную работы;
— и все это — с одной и той же поделкой из кружка «Юный ардуинщик!»

Ебаный блядский андроид

Изучаю тут реализацию 6LoWPAN over BLE для Android, выяснилось следующее:

— в 7 и 8 версиях есть недокументированный способ открыть сокет уровня L2CAP (через джавовскую рефлексию, описано в дипломной работе этого самого Wieland’а), в 9 версии рефлексия для некоторых «системных» классов запрещена (в том числе и для BluetoothDevice), в 10 версии это API сделано публичным;
— начиная с 6 версии Android не дает узнать MAC-адрес «своего» Bluetooth-адаптера, обходные пути нагугливаются на стековерфлоу, но постепенно закрывались гуглом, начиная с версии 8.1 закрыты все;
— MAC-адрес постоянно и непредсказуемо меняется ради «прайваси» пользователя;
— для того, чтобы начать сканирование BLE-устройств, надо включить «геолокацию», что неудобно для пользователя и в принципе выглядит подозрительно (тут у нас приложенька для фитнесс-браслета, нахуя ей геолокация?).

Охуенно, со всех сторон охуенно. Тут мы заботимся о прайваси, тут мы предлагаем включить все «разрешения», там мы просто всех в рот ебали, и программистов, и пользователей.

Разъясните мне про маркетинг

Я, конечно, многое могу понять — но разве менеджмент качества имеет какое-то отношение к «маркетинговой деятельности»?

https://www.hse.ru/ba/it/students/diplomas/468570339

Или это из разряда баек про «PCI DSS — это логотип, увеличивающий конверсию»?

Вдогонку предыдущему — про психопатов

В обсуждениях вчерашней истории про обиженного программиста и npm обнаружил забавное типовое поведение айтишнегов разных мастей. Мол, чувак ни в чем не виноват, был в своем праве (тут ссылаются на написанные в лицензии буковки «as is»), дальше оценки несколько разнятся — от «молодец, так и надо» до «ну сам бы я так не сделал, но все равно молодец».

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

Ну и на закуску — изрядный портрет этого вашего «айти-специалиста» из одной хорошей книжки:

Типичный профессиональный системный администратор – человек, в реальном мире ничего из себя не представляющий (даже далеко не всегда высокооплачиваемый), но в мире виртуальном – царь и бог. Подобное двоякое положение сильно способствует развитию комплексов неполноценности и стремлению компенсировать в виртуальности свою ничтожность в реальном мире. Поскольку речь идет о молодом человеке, значительную часть времени вынужденном проводить за компьютером (иначе профессионализм не приобрести), данный комплекс часто усугубляется половой неудовлетворенностью. Теперь представьте, что может натворить такой системный администратор с болезненным желанием продемонстрировать свою власть.