to post messages and comments.

Эти ребята, что проверить наличие данных в рингбуффере делают так:
if (PLAYREC_FileContext->Event_Producer>=PLAYREC_FileContext->Event_Consumer)
{
Event_Size=PLAYREC_FileContext->Event_Producer-PLAYREC_FileContext->Event_Consumer;
}
else
{
Event_Size=PLAYRECi_MAX_EVENT_QUEUE-(PLAYREC_FileContext->Event_Consumer-PLAYREC_FileContext->Event_Producer);
}

if (Event_Size!=0) ....

Это не спагетти-код, это каша-код. 100500 функций, в каждой полезного кода по 3-4 строки, зато обвязки, проверок и прочего ещё строк на 200 в каждой. Причем проверки одни и те же в функциях которые друг друга вызывают. А данные хранятся в разных структурах с одинаковыми полями внутри

st

использование одновременно (ну, часто и то и то, не одновременно) саблаймового поиска по командам по Ctrl+Shift+P и убунтового поиска по меню (Alt) сносит голову просто. А также показывает, куда надо стремиться последнему :)

st

SublimeLinter, конечно, умная штукенция, но по-умолчанию навязывает писать длинные линии (отключает проверку), а также отключает предупреждение за "from foo import *".

Наконец-то в реальной жизни столкнулся с серьезным проявлением багов в кремнии: нам прислали сэмплы контроллеров STM32F105, но версия у них достаточно ранняя, чтобы там присутствовала ошибка, которая делает использование встроенного загрузчика по uart/can/usb невозможным. Ляляля :)