to post messages and comments.

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

Полностью оформил работу своей программы. Осталось обработать пару ситуаций и можно будет выкладывать.
Хотя, если честно, запал пропал. Мне это уже не нужно. Оно работает. Пусть и не идеально, но поставленная цель уже, можно сказать, достигнута. Если будет совсем лень, то можно и закрыть глаза на недочёты. Хоть это и плохо.

Обработка ошибок, которые возникают в многопоточном приложении превращается в настоящий ад. Просто не было у меня такого опыта.
Создаётся впечатление, что для того, чтобы закончить написание ScreenBlocker мне придётся узнать несколько больше, чем я полагал в самом начале.
Сейчас вот как раз чаще всего получаю NullTeferenceExeption и никак не могу понять от чего.

Что можно придумать хорошего, если в одном месте у меня идёт обращение к базе, которой может не быть. В таком случае оно, конечно, если подождать, то выдаст ошибку как полагается, а если мышкой потыкать, то система решит, что программа зависла и предложит убить, чего мне не надо.
Как этого избежать? Как обойти?

Исправил ошибку с потерей подключения к сети.
Хах!.. Как это ни странно, но большинство изменений в программе совсем не требуют глубокого погружения и коренного изменения, что меня лично удивляет. Так что теперь ошибку оно будет выдавать только в случае реально грустного — полного краха программы. Осталось только немного поправить код административного интерфейса и будет просто счастье.
Пойду-ка я теперь испытаю этот самый код на хрюшке в зале.

Я тут делаю доставалку провайдеров из массива с задаваемой вероятностью, и написал вот такую вещь: pastebin.com
Проще говоря, она берёт случайное число от 0 до суммы вероятностей в массиве (в данном случае вероятность — не число от 0 до 1) — назовём эту сумму N, идет по этому массиву, вычитая из N вероятность текущего элемента, и если N <= 0, то элемент является искомым. На первый взгляд, должно работать, но я не уверен.

Сижу, пишу темплейт для color chooser-а в заставке. Слушаю Best of Times из WoG OST (спасибо, @Orhideous ). И осознаю, что как же, вашу кобылу, приятно сидеть и писать то, что ты хочешь, не думая о таких вещах, как монетизация, реклама и другая фигня, связанная с получением денег. Просто писать проект для себя и как нравится, потому, что он тебе нравится. Ниописуемо.
И да, сори за капитанство ^^

Я считаю, что результирующие переменные в методах это хорошо. Такой код удобнее читать и поддерживать. Также это очень полезно при отладке и ведении трейс-логов. Например, на одном собеседовании я написал примерно так:
 public MyObject findByValue(Collection<MyObject> myObjects, int value) {
   MyObject result = null;
   for (MyObject myObject : myObjects) {
     if (value == myObject.getValue()) {
       result = myObject;
       break;
     }
   }
   return result;
 }
Интервьюер тогда сразу зацепился за переменную result. И вот что делать с подобными спагетти-кодерами?

Вот есть проект. Код в нём полное УГ. Сам писал. Сейчас хочется все это переписать(не с нуля) по нормальному. А запустить его надо как можно скорее — тогда говнокода будет еще больше. =(