CppCon 2014

Короткий звіт про тиждень що я його провів на зльоті представників комітету зі стандартизації С++, розробників компіляторів та бібліотек, розробників що займаються оптимізацією коду та “промислових” представників галузі: розробників ігор, дослідників ведучих наукових закладів та представники найвідоміших компаній.

Усього було присутньо більше 600 людей. Щодня сесії на різні теми починалися 0 9 ранку, закінчувалися о 6 вечора з 2-годинною перервою на обід. О 8 вечора починалися воркшопи (класи) де можна було поговорити скажімо з авторами бібліотек boost, представниками комітету зі стандартизації С++ або іншими видатними людьми. Паралельно доповіді тривалістю в 1-1.5 години читалися у шести аудиторіях проіменаваних на честь видатних вчених: Паскаль, Ньютон, Ферма, Лейбніц, Декарт та Ейлер.

Цього року більшість доповідей було присвячено паралельному програмуванню (~80%) на відміну від попередніх років коли акцент робився на метапрограмування (шаблони).

Багато також говорили про новий стандарт С++14 в який увійде все те що було недороблено в С++11. А вже в С++17 буде багато нових змін які будуть підкориговані в С++20.

Ну і декілька речей які особисто мені запам’яталися.

Всюди auto

Сучасна рекомендація полягає в тому щоб використовувати auto де тільки можна. І суть в тому що це не лише коротший запис, але і безпечніший: скажімо при зміні типів в алгоритмах/інтерфейсах/структурах данних на відбувається прихованого приведення типів. Тому замість

for (list:const_iterator it = l.begin(); it != l.end(); ++it) {...use(*it);...}

В С++11 можна (і треба) писати

for (const auto& i: l) {...use(i);...}

А в С++14 стане можливим навіть

for (i: l) {...use(i);...}

Але авто-виведення корисне не лише для циклів та ітераторів, але і для лямбд, які за новим стандартом можуть повертати лямбди як результат:

auto plus = [](auto x){ retur [](auto y){ return x + y; } };
auto plus4 = plus(4);

auto s6 = plus4(2);
auto s10 = plus(4)(6);

Правила виведення типів

Через додання авто-виведення типів в мову довелося додати правила за якими це виведення відбувається. Усього цих правил більше 10 зараз і тим хто розробляє бібліотеки треба їх усі знати і розуміти дуже добре. І в цілому тенденція така що мова для тих хто пише біблітетеки мова стає складнішою і дозволяє робити тонкіші речі, а для тих хто користується бібліотеками мова навпаки стає простішою.

Так от для виведення типів треба враховавати що діють правила як для шаблонів, а для шаблонів тип шаблону залежить від параметрів методів. Крім того авто-типи втрачають константніть/волатильність. Ну і для типів-значень правила виведення завдяки слайсінгу складніші ніж для вказівників та посилань.

Нові рекомендації для програмістів:

  • для обов’язкових параметрів які не будуть змінюватися використовувати const &
  • для обов’язкових параметрів які будуть змінюватися використовувати &
  • для необов’язкових параметрів використовувати *
  • для оптимізаційних трюків і передачі прав володіння використовувати && та  std::move(). Але при цьому важливо на 100% розуміти що робиш бо такий код майже гарантовано вбиває всю оптимізацію яку міг би зробити компілятор.

 

Ніяких new/delete

Залиште new/delete людям які пишуть біблітотеки та аллокатори, почніть використовувати unique_ptr/shared_ptr. І не забувайте що unique_ptr є фактично безкоштовним і фактично це голий вказівник, але безпечний! А shared_ptr використовуйте коли у об’єкта може бути лише один власник.

Наприклад замість

widget* f();

void n(){
  widget* w = f();
  gadget* g = new gadget();
  use(*w, *g);
  delete g;
  delete w;
}

Треба писати

unique_ptr<widget> f();
void n(){
  auto w = f();
  auto g = make_unique>gadget>();
  use(*w, *g);
}

Небезпечний код

Це була довга доповідь з трьох частин що зайняла майже весь день і була присвячена тому як писати небезпечний код.

У короткому підсумку код

 

do_something();

cleanup();

Не є небезпечним через те що в ньому ніяк не перехоплюються та не оброблюються виключення і не даються гарантії що алоковані ресурси буде звільнено у правильному порядку. Із застосуванням методіки RAII (Resource Acquisition Is Initialization) небезпечний код має виглядати так:

do_something();

Досягається це дотриманням простих правил:

  • конструктор ніколи не кидає виключення та не викликає код який може кинути виключення само собою
  • так само і деструктор ніколи не кидає виключення
  • оператор присвоєння ніколи не кидає виключення і має бути транзакційним. Досягається це створенням тимчасового об’єкту який і ініціалізують як копію, а потім просто замінюють, щось типу такого:
class A {
  A& operator=(const A& a)
  {
    A tmp(a);
    using std::swap;
    swap(tmp);
    return *this;
}

До речі звернічть увагу що swap рекомендується використовувати саме так і не викликати std::swap() на випадок якщо swap() перевантажено для типу.

Ну і взагалі там неймовірно багато усього було. Наприклад розбір того чому код

f(shared_ptr(new A()), shared_ptr(new B());
}

є небезпечним. Ось тут https://github.com/CppCon/CppCon2014/blob/master/Presentations/Exception-Safe%20Code/Exception-Safe%20Code%20-%20Jon%20Kalb%20-%20CppCon%202014.pdf?raw=true файл з усіма слайдами з цієї доповіді.

С++ на Марсі

Виступав ведучий програміст проекту Куріосіті (http://mars.jpl.nasa.gov/msl/) і розповідав в основному те як працює система руху цієї машини. Той С++ що вони там використовують це дуже порізана мова: нема шаблонів, виключень, потоків, множинного успадкування, перевантаження операторів, тощо.

У них там кожна підсистема незалежна і продубльована. Наприклад система руху на останньому марсоході побудувана на платі з процесором PowerPC RAD750 (133 MHz), має 128 Мб пам’яті, використовує ОС VxWorks. В цій ОС є пакетна обробка задач і розділена пам’ять, тому вони написали свій менеджер пам’яті.

Взагалі цікаво що 4 з 19 камер марсоходу належать системі руху (по 2 на кожен комп’ютер) і використовуються майже як людина використовує очі. Максимальна швидкість складає 1.5 см на секунду, але після цього треба зупинитися, зробити стерео-фото двома камерами, розбити катринку на сітку врахувавши перспективу і оцінити кожну клітинку після чого вибрати оптимальний/найнебезпечніший маршрут. Прикол ще в тому що колеса можуть або крутитися, або повертати, одночасно і те і інше не можливо робити. За день марсохід може зробити максимум 100 метрів.

Прикольні баги там у них. Наприклад коли машинці довірили самостійно проїхати кілька десятків метрів вона зупинилася і відмовилася їхати далі тільки коли прокручування (сковзання) колес перевищило допустимий показник. З’ясувалося що заїхали в пісчану дюну і наступні 2 місяці витратили щоб вручну вивести машину з ловушки (так, кожну команду відсилали на Марс окремо). Тобто за 2 місяці щоденної роботи проїхали назад 20 метрів.

Ну і був у них там якийсь баг з пам’яттю через який комп’ютер почав перевантажуватися невпинно. На той момент коли баг знайшли і пофіксали Марс сховався за Сонцем і довелося чекати кілька місяців доки з’явиться пряма видимість Smile

 

С++ в іграх

Представники галузі говорили в основному про оптимізацію коду і на кожен слайд з С++ кодом у них було по 3-5 слайдів з асемблером. Всякі хитрі трюки оптимізації що вимагають знання принципів роботи заліза і таке інше.

Але ось вам кілька цікавих фактів: в коді Assassin’s Creed 6.5 мільйонів (!) рядків коду на С++ самої гри плюс 9 мільйонів рядків С++ інструментів (це різні редактори, пакувальники і таке інше) та 5 мільйонів рядків на С#. При цьому в коді гри нема RTTI, виключень, шаблонів (ні STL, ні boost).

 

Кілька нових фіч

Це все або ось-ось з’явиться, або вже підтримується деякими компіляторами (читайте у вікіпедії подробиці):

  • constexpr  дозволяють писати код який виконується в процесі компіляції.
  • бар’єри пам’яті (дуже складна тема сама по собі) неймовірно спрощують написання програм у паралельному стилі і є набагато дешевшими за синхронізацію: lock_guard, conditional_variable, atomic, compare_exchange_weak/compare_exchange_strong. Про це все треба читати, воно не те щоб складне, але треба якісь приклади писати для пояснення.
  • atomic<T> можна буде використовувати для shared_ptr. Звучить це як щось звичайне, але насправді така підтримка дозволить уникнути багатьох проблем у реалізації lock-free алгоритмів та значно скоротити і спростити код.
  • обмеження шаблонів – можна буде вказати що шаблон чи функція призначені, наприклад, лише для колекцій які можна сортувати:
template<typename S, typename T>

requires Sequence<S> &&

  Sortable<S> &&

  Equality_compare<Value_type<S>, T>

Iterator<S> sort(S& seq);
...
sort(vector{ 5, 4, 1 }); //Ok
sort(list{5, 4, 1 }); // Error: not Sortable

Ну або скоротити все це до

auto sort(Sortable& seq);

Можна буде писати свої обмеження якось ось так:

 

requires(C x){ { f(x)} –> int }

що означає “має бути можливим викликати функцію f для об’єкту типу С і потім привести результат до типу int”.

Зараз комітет працює над визначенням списку стандартних обмежень.

 

Звісно при всьому бажанні я не можу переказати всього що там було, ось вам кілька посилань щоб почитати самостійно:

  • відеозаписи доповідей буде викладено на http://cppcon.org/. Якщо ви будете дивитися усього по 2 доповіді на тиждень то якраз завершите перегляд перед початком CppCon 2015
  • слайди презентацій доступні на https://github.com/CppCon/CppCon2014
  • Книга Effective Modern C++ добре описує всі нововведення та механізми С++ – http://shop.oreilly.com/product/0636920033707.do
  • Нова книга Страуструпа дуже коротко описує сучасний С++ усього на 180 сторінках (офіційний опис стандарту мови зараз складає понад 800 сторінок) – http://www.stroustrup.com/Tour.html

2014-08-31–Martha Swim Lake

 

Щоб внести трошки різноманітності в наше спортивне життя яке якось уповільнилося останнім часом вирішили взяти участь в цьому крихітному старті з плавання. Два роки тому ми вже приймали участь в цьому старті що проходить недалеко від нас (15 хвилин машиною до озера) і в цілому залишилися задоволеними. Ось тут можна почитати: 2012-07-07-Martha Lake Swim та Ще кілька фото з Martha Lake Swim.

Цього року погода була не така сонячна, але було бажання поплавати і зробили ми це із задоволенням.

 

Також було меньше людей ніж у 2012-му і організотори вирішили запустити тих хто плив 2 та 1 милю разом. Оленка цього разу захотіла спробувати допливсти 2 милі.

Ну що ж, натягли костюми, умовно порозминалися… Все ж таки це дуже довга дистанція для нас і швидкості на ній не такі що прямо аж сильно розігріватися треба.

 

Вирішив підклеїти великий шматок лейкопластирю на шию там де костюм постійно натирає і на диво це спрацювало – шия ціла.

На старті невеличка штовханина і колотнеча, але метрів за 200 усі розтяглися в одну лінію і до кінця вже пливлося спокійно.

 

На відкритій воді можна пливсти за кимось і тим економити сили, отож і я прив’язався спочатку за одним хлопцем який наче і плив нормально, але потім я зрозумів що дарма вчепився в нього. Він плив якийсь час вільним стилем (дуже технічно і доволі швидко), потім повертався і робив кілька гребків на спині, а іноді різко зупинявся і робив кілька гребків брасом (мабуть коригував напрямок).

Коротше я помітив що ми відстали від тієї групи в якій спочатку були і вирішив наздоганяти сам.

 

А в плавані на відкритій воді на відміну від бігу треба не просто сильніше пливсти щоб наздогнати, але і пливсти у вірному напрямку. Час від часу кидаєш погляди з під лоба щоб глянути куди зносить і внести корективи… це реально втомлює.

Як там не було але наздогнав ту групку і плив за ними доки не повернули на друге коло (ми робили 2 кола по одній милі). А там вже стало помітно що вони сильніші за мене і повільно розрив почав зростати. На фінішу я програм мабуть метрів 50 останньому з тієї групи.

Самому пливсти важко на відміну як пливсти за кимось. Ну і крім того не можливо пливсти зі збитим диханням, а тому сильні гребки і краща техніка значать дуже багато. Бути технічним мабуть важливіше ніж бути сильним чи/та витривалим на відміну від того ж бігу чи велосипеду.

 

У підсумку мій час 56:39 що на 30 секунд гірше ніж 2 роки тому, але я задоволений результатом і самим стартом.

Олена ж усю дистанцію трималася за парочкою яка і вивезла її до самого фінішу де вже вдалося їх обійти. У Олени час 1:12:18. Головне що допливла, це була єдина ціль.

Крім того ми обоє були на четвертих місцях в загальному заліку Smile

Помер мій батько

Кілька днів тому помер мій батько…

Я довго думав чи писати цей пост чи ні. Сам не дуже добре відношуся до подібних постів, ніколи не можна придумати що сказати людині у відподівідь на таке. Одна з причин чому я це пишу в тому що за кілька років я звик таким чином (через написання постів у блоґ) фіксувати свої переживання. Тому не вважайте себе зобов’язаними писати коментарі у відповідь, сприймайте це як запис що її було призначено лише для мене і вас випадково вдалося побачити її. Ящо ж ви таки вважаєте це пост чимось таким що не  варто було б писати… що ж, може я і сам через деякий час його приберу.

Є ще одна причина чому я вирішив це написати. Є кілька людей які знали мого батька і регулярно читають мій блог, при цьому особисто давно з ним не перетиналися чи через те що живуть далеко, чи просто через зайнятість. Тому цей запис є також повідомленням друзям і знайомим мого батька про те що сталося.

Ті ж хто його не знав далі можете не читати – нічого хорошого далі не буде.

Взагалі думаючи про це я все ще ніяк не можу сприйняти його смерть як остаточний факт. Хвороба з’їла його за якісь два місяці. Рівно рік тому він був у нас в гостях, ми робили велоподорож у 50 км по Сіетлу, ходили в похід на місцеву гору, каталися на озері на дошках, гуляли Сіетлом та околицями…

Я пам’ятаю той дзвінок додому коли мама сказала що батькові щось не добре, мабуть тиск піднявся. А насправді йому вже як потім з’ясувалося було не по собі вже пару тижнів, але він нікому нічого не сказав. Не маючи ніяких серйозних хвороб за все життя, навіть не знаючи що таке головний біль він думав що це якась тимчасова недуга що сама з часом пройде.

А коли легше не стало пішли у лікарню де поставили діагноз інсульт і почали лікувати від нього. При цьому батькові ставало все гірше з кожним днем: спочатку порушилася координація, потім почала відніматися ліва частина тіла. Далі лікар сказала що потрбіне додаткове обстеження бо від лікування стає тільки гірше. Повезли у Дніпропетровськ, на той час він вже сам ходити не міг, а це усього тиждень пройшов як поклали у лікарню.

В Дніпропетровську просканували мозок і винесли вирок: рак 4-го ступеню з метастазами у мозок. Сказали що нічого вдіяти не можна і метастази неоперабельні – занадто глибоко у мозку і неможливо до них дістатися не вбивши паціента. Відправили додому.

Дома знову у лікарню, почали колоти ліки щоб позбавитися від результатів лікування. Батько хоча і не міг сам ходити (ліва сторона тіла була дуже слабка) проте почав почувати себе краще.

Я приїхав в Україну якраз коли його забирали додому. Сказали що “виписують”, а насправді ми йому діагноз так і не сказали до самого кінця.

Видно було як він швидко втомлюється: якщо з ранку він ще балакав, міг сам сісти, пробував з нашою допомогою ходити, то під вечір в нього вже не було сил ні говорити, ні навіть набік повернутися він сам не міг.

Проте ми сподівалися що діагноз було поставлено помилковий. По-перше, у нього нічого не боліло, а як правило на цій стадії раку людям вже регулярно колять опіати для знеболення. А, по-друге, щодні аналізи не виявили раку в жодному з органів. Лікарі між тим нам казали що сподіватися не варто і рак десь є в організмі, а те що знайти не можуть то мало суттєво.

Останні дні як мені мама казала у батька почалися болі і він жалівся на те що спина болить і ноги, практично перестав рухатися. Спочатку після “виписки” він ще дивився телевізор, слухав аудіокнижки, навіть пробував читати. Але через кілька днів перестав все це робити: його все втомлювало, картинка розпливалася і він просто мовчки лежав. Балакати теж не хотів. Під кінець йому вже почали колоти дімедрол і останні дні він хоча б був позбавлений бюлю.

А потім мені подзвонив брат і сказав що батька не стало. Поховали його через день, людей кажуть на похоронах було багато – у нього було багато знайомих, друзів, людей для яких він робив якусь роботу, людей з якими займався спортом, ті з ким вчився і працював, ті з ким просто товаришував. Я не став їхати, хоча може і дарма, просто не встиг би.

Вже потім сказали що діагноз рак не підтвердився, а те що побачили на знімках виявилося первісною пухлиною мозку – злоякісне утворення з невідомим походженням. Лікується хирургічним шляхом (видаляється), після чого роблять радіо- та хіміо-терапію. Але не цьому випадку, як я вже сказав занадто глибоко вони були і у таких ділянках що оперувати не можна.

Хотів написати щось на зразок прощальної промови, а вийшов якийсь переказ фактів. Все, більше писати не можу.

39

Треба ж щось написати, якийсь звіт чи що :)

Число якесь неймовірне… Не те що б мене шокувало те що вже скоро 40, просто з дня в день не думаю про те скільки мені років, а коли доводиться згадати то “ой, ну ніфіга ж собі”!

Якось так склалося що у мене і Олени, краще скажемо у нашої родини, більшість друзів помітно молодші за нас. Ну тобто у нас звісно є і друзі нашого віку, є і старші, але більшість все ж таки молодші. Про що це говорить? А хто його зна про що воно говорить. Хтось скаже що це показує що ми молоді духом, хтось скаже що ми ще не подорослішали. Я ж скажу що, по-перше, так склалося, а, по-друге, наші інтереси та вподобання переважно там де інтереси молодших за нас людей.

Що ще сказати? Дивлюся назад і в принципі є речі які приємно згадувати: люди, ситуації, події. Є таке чого якби давали другу спробу то намагався б уникнути, але якось усе погане розмилося з часом і особливих емоцій не викликає. І аж солодке тремтіння від того що ще чекає по переду. Що там буде не знаю, та і планувати більше ніж на кілька днів не люблю, але знаю що будуть ще приємні моменти і цікаві люди які згодом стануть приємними спогадами.

Також дякую усих хто мене читає, коментує, слухає та просто про мене знає. Без вас на цій планеті було б не так кльово проводити час :)

Прохання до вас є. Якщо знайдете натхнення написати кілька речень то напишість що з мої вчинків та слів вас колись здивувало. Без оцінки добре чи погано, прото те що викликало подив чи здалося не надто адекватним. Питаю з ціллю може пригадати щось про що забув давно. Буває от тобі розказують якусь історію з твоєю участю, чи що ти колись сказав що когось сильно зачепило, а ти навіть не пригадуєш такого. От і тут може щось таке буде.

2014/07/11–Ocean Shores Toughman Triathlon

Уього лише другий мій триатлон за цей рік, все ще не у дуже добрій фізичній формі після аварії, але дуже хотілося його зробити і перевірити свій загальний стан.

image

 

Місто Ocean Shores (Океанський Берег) розташоване за 2.5 години автомобілем від нас і як видно з назви розташовано на березі океану.

Приблизно остання третина дороги проходить у страшенній глушині де дуже мало людей і олені як у себе вдома переходять табунами дороги коли їм заманеться. Безпосередньо перед Ошен Шорс маршрут проходить через відносно велике (як для цієї місцевості) місто Абердін в якому народився і жив лідер Nirvana Курт Кобейн. На в’їзді в місто стоїть знак зі словами Come As You Are.

В Ошен Шорс же населення складає 5 тисяч людей які задіяні у обслуговуванні туристів – велетенські готелі вздовж пляжу і складають усе місто.

А океан без хвилерізів це скажу я вам така не надто привітна річ. Страшенний гуркіт, великі хвилі, сірий пісок. У місті доволі прохолодно – коли в Сіетлі вже кілька днів тривала спека в 95 градусів тут був туман і температура 65. Причому це звичайна погода для цього міста наскільки я зрозумів. Молочно білий туман вдалині зливається с сіруватим океаном і темно-сірим піском. Дуже непривітно все це виглядає, хоча і красиво.

Тепер щодо самого старту. Він був дуже невеличкий – на Half Iron Man дистанції стартувало меньше 100 учасників. Плавання було у вузенькому озерці – якраз від одного берега до іншого, розворот і назад. Пливлося добре і тим більше здивованим я був побачивши результат – 33:20, на пару хвилин повільніше ніж я сподівався.

Ну та нічого, моєю єдиною ціллю було закінчити дистанцію, а не зійти як на попередньому старті. А який вже там буде час то було діло десяте.

Після плавання (як і під час) не було холодно не дивлячись на те що сонце весь час було закрите туманом. Проте на відміну від інших стартів одежа так і залишалася мокрою майже до самого фінішу, як правило на велоетапі вона висихає за кілька хвилин. А в транзитці я провів 1:43 що непогано зважаючи на те що не надто поспішав.

Велоетап проходив у два кола кожне з яких було “туди і назад”. І треба сказати що усі 90 км (а за моїм комп’ютером вийшло усі 92) дорога була дуже хороша: гладенький асфальт без тріщин та сміття, плаский як стіл маршрут, вітер хоча і був проте не надто сильний. І хоча рух транспорту не було перекрито місцевість ця наскільки малолюдна що за весь велоетап може з пару десятків машин проїздили повз.

Почалося добре, їхалося легко і в задоволення, намагався економити сили. Десь вже за кілометрів 30 до фінішу почав відчувати що дистанція надто довга і я не готовий до неї, проте такого повного виснаження як на попередньому страрті не було. Все ж таки довелося терпіти до транзитки і останні кілометри крутилая думки “де вже той фініш”.

І якщо на початку етапу ще бачив інших учасників попереду і позаду то вже другу половину їхав сам. Проте двічі бачив Олену яка їхала мені на зустріч і радісно посміхалася.

Щодо результату то 2:43 не найкращий мій час (хотілося б ближче до 2:30), але непогано. Друга транзитка – 1:04 і я починаю біговий етап.

Треба сказати що весь час до цього я думав саме про біговий етап і чи зможу я його зробити взагалі, а якщо зможу то чи варто. Тут така річ що роблю я все це тільки через те що мені це подобається і важливо щоб не робити через силу, а то інтерес втратиться. Та і доцільність страждань коли не можеш показати нормальний результат сумнівна. Тому план був дивитися на самопочуття і залишати дистанцію якщо щось йде не так.

Скажу чесно – було важко і я не надто боровся. Спочатку зупинявся і проходив пішки метрів 20-30 через кожен кілометр. Потім якось легше пішло і кілька кілометрів пробіг без зупинки. Пив воду та енергетичні напої на кожній станції. Десь за 5 км до фінішу відчув виснаження і знизив темп майже до хотьби просто щоб бігти без зупинки.

Кілька кілометрів бігового етапу (2 км в кожен бік) проходили по пляжу. Тобто по піску. Пісок там як я вже казав сірий і щільний, втрамбований такий що сліди від бігунів залишалися ледь помітні. Взагалі той пляж не для купання, принаймні я не бачив щоб там купалися, а от машини там їздять – є спеціальні заїзди і виїзди. Прикольно було бігти паралельно хвилям що накочувалися на берег.

 

Олену зустрів десь коли подалав перші 2 км а вона вже бігла фінішувати.

А в цілому біг був важкий, повільний і нерадісний. Ну і час 1:59:55 для цієї дистанції (21 км) є у мене поки що найгіршим.

У підсумку: загальний час – 5:19:21, я на 19-місці в загальному заліку і на 7-му у своїй віковій групі. Але головне що дистанцію цю можу знову долати, а форма поступово відновиться сподіваюся.

Олена ж подолала свою олімпійську дистанцію за 3:02:17 і була 5-ю у своїй віковій групі.

 

 

Навіть є ось таке відео мого фінішу яке зробили Олена (так, вертикальне відео):

Ocean Shores Triathlon HIM Finish from 0lexandr on Vimeo.

Латте-машина

Для вас це може і звична річ, а для мене це була дивина дивна.

Для таких же як я селюків поясню що лате це такий напій де в гарячу молочну піну додають невеличку кількість кави – http://uk.wikipedia.org/wiki/%D0%9B%D0%B0%D1%82%D1%82%D0%B5. Напій в результаті виходить не такий гіркий як просто кава, хоча має смак і запах кави і так само бадьорить.

Коли машинку вмикаєш першим за день то треба почекати хвилини 3 доки вона щось там в собі нагріє до 200 градусів (далі всі градуси у Фаренгейтах, для переводу в Цельсії віднімайте 32 і діліть на 2).

У латте-машини в нашому офісі є кілька параметрів, але я знаю лише про два з них: дрібність помолу зерен та температура до якої доводиться молоко.

Заправляється машина смаженими зернами, але я у каві не розбираюся і смак різних зерен не розрізнюю. Хоча у нас купують дорогі зерна, може через це – усі дорогі однаково хороші, а погіні кожне погане по своєму :)

Наскільки я особисто це відчуваю чим грубіший помол тим простіший, але яскравіший смак кави. А прі дрібнішому помолі смак виходить м’якіший, але і напій міцнішим стає. Не те щоб я знову ж таки розрізнював на смак, але у мене таке враження що найгрубіший помол є найприємнішим для мене.

Температура ж молока на смак не впливає взагалі наскільки я розумію. Прото більше піни виходить тому що молоко довше готується.

Отже спочатку у спеціальну ложку мелемо каву. Робиться це дуже просто – вставили її в спеціальні пази, повернули і молотилка сама вмикається. Весь процес займає кілька секунд (залежить від виставленої дрібності помолу).

В результаті ложка щільно набита помеленими зернами і її вставляємо в сусідні пази щоб через цей пил пропустити гарячу воду. Можна обрати скільки саме води пропустити через “заварку” – чим менше води тим міцніше буде кава. Взагалі то якщо не готувати молоко, а пити лише приготовлену таким чином каву то можна сміливо називатися маніяком – наскільки міцний і густий кавовий розчин виходить (десь 1/5 чашки за обсягом).

Для молока ж треба враховувати що у обсязі в результаті готовки воно збільшується вдвічі (знову ж залежить від обраної температури).

Різні типи молока (маю на увазі жирність) як не дивно дають дуже різний смак. Мені особисто подобається соєве молоко яке звісно і не молоко, а зі звичайного подобається знежирене. Так само різниться і піна з різного молока. Причому різниця більша ніж можна було б очикувати.

Наливаємо молоко у спеціальний глечик, в глечик встромляємо носик і через той носик в молоко напускаються дрібні бульбашки повітря і він же нагріває молоко.

Після того як напій приготовлено прибираємося. Таблетку що утворилася після заварювання кави вистукуємо з ложки у спеціальну коробочку. Спеціальна вона не тому що з кавою треба щось спеціальне робити, а тому що саме об неї зручно вистукувати ту таблетку. Глечик та ложку далі достатньо сполоснути водою, навіть терри нічим не треба, досить просто полити водою і вони чисті.

А от сама морока почистити носик який утворював піну – на ньому накипає молоко і його треба старанно відтирати. Коли його опускаєш на місце то він ще додатково чиститься самою машиною випусканням кількох струменів пари. Проте зрозуміло що для машинок які використовуються у кав’ярнях ніхто подібну ручну чистку не проводить.

Крім власне смачного напою мені ще подобається сама процедура. Каву п’ю раз на день – як тільки з’являюся на роботі.

Чи варто мати таку машину дома? Річ класна і мати її було б приємно, але не думаю що я б нею часто користувався, та і дорогувато вони коштують. Тому ні. Те що вона є на роботі звісно добре, але б і без неї прожив би спокійно.

Цукру/лікерів додавати за власними вподобаннями. Смачного!

Концерт Kraftwerk

Для тих хто раптом не знає німецька команда Kraftwerk є родоначальниками електронної музики і виступають вже більше 40 (!) років. Хоча вони і починали як рок-команда свого часу, вірніше навіть як kraut-rock, але дуже швидко знайшли свій стиль і з формату “гітари-барабани” перейшли у формат “4 мужика за сінтезаторами”.

Концерт відбувався у сіетльському театрі Paramaunt, вартість квитка була від 70 долларів. Нам вдалося сісти в першому ряду на балконі прямо по центру зали, це десь метрів 20 до сцени, дуже кльові місця.

Формат виступу у команди не міняється кілька десятиріч, а саме: 4 вже лисі і старенькі дядьки непорушно стоять за клавіатурами синтезаторів, їх костюми світяться в темряві, бігають вогні по краях інструментів, а позану на великому екрані демонструється 3D шоу для якого нам усім видавали окуляри на вході.

Особисто я групу дуже люблю і у захваті слухав давно знайомі композиціх “Тур де Франс”, ” Автобан”, “Радіоактівіті” та інші шедеври. З іншого боку Олена якій ця група не сказати щоб сильно подобається порівняла усі їх пісні з ряднинкою: довгі, і навіть якщо добре зроблені у деталях все одно не цікаві. Я таку думку не поділяю, але розумію. Також погоджуся з тим що сьогодні є потреба у більш агресивній музиці, а весь цей вдумливий концептуалізм швидко втомлює публіку.

Ще я зрозумів що ніколи раніше не слухав електронної музики на правильних пристроях. Якщо метал, класику та навіть більшість джазу можна слухати більш-менш отримуючи правильні враження і на комп’ютерних колонках і на сумнівної якості навушниках то тут… Скажу що я наче вперше почув цю музику. А разом з відео-супроводом так взагалі бомба.

Кліп з кадрами з Чорнобиля:

Ще треба сказати про дуже дивну публіку яка була на концерті (спостерігав на виході). Дика суміш гіків, хіпстерів та фріків. Тунелі у вухах, волосся різних кольорів та стилів, наколки, шорти/джинси/піджаки, футболки з назвами електро- та індастріал команд. Як в паралельний світ поринув :)

Ось якось так їх концерти виглядають зараз:

А в цілому задоволений концертом неймовірно!

Концерт Інгві Мальмстіна

Інгві Мальмстін (Yngwie Malmsteen) – шведський гітарист-віртуоз. Він став першим успішним і всесвітньовідомим гітаристом що прославився саме завдяки своїм швидкісним гітарним соло.
З’явився він на сцені і прославився на початку 80-х років. Іноді кажуть що Річі Блекмор (гітарист Deep Purple, Rainbow) своєю грою розбудив Інгві Мальмстіна після якого вже з’явилися такі монстри як Стів Вай і Джо Сатріані, а ті вже породили бездушних швидкісних пиляльників типу Майкла Анджело Батіо.
Іншими словами Інгві поєднав в своїй музиці мелодичність, технічну складність і неймовірну на той час швидкість.
Свого часу його платівка з драконом стояла на видному місці в усих музичних магазинах СРСР і його музика вважалася металом. А по суті це ліричний і швидкісний хард-рок.
Ось подивитися на цю легенду ми і поїхали в Сіетл. Концерт відбувався у знаменитому клубі Showbox в самому центрі міста. На моє око зібралося близько 300 людей, може трохи більше – клуб було заповнено десь на 80%. Ціна квитка – $35.
На розігріві виступали дві команди назви яких я не пам’ятаю, яле які були на диво в тему – музика 80-х, хороший вокал, гітарні запили. Коротше настрой дали правильний.
І ось прийшов час виходу маестро. До речі свої ж музиканти називали Інгві виключно “маестро”, або “найкращий гітарист світу”. Зачіска у стилі 80-х, шовкова рубашка розстебнута до пупа, браслети з хрестами на руках та шиї, шкіряні штани і гостроності туфлі, дим та лазерне світло на сцені… Але все це було так в тему тому що він грав!


Музика, а вірніше нескінченний і неймовірний потік чітких, крихітних і дрібних як порошинки нот які складалися у приємну м’яку музику… Складно описати. І все це так доречно і так красиво.

Техніки одно бігали міняти йому касети з медіаторами на стійку мікрофона. Мальмстін одно кидався медіаторами в натовп. Іноді зіграв пассаж на 5 секунд і медіатор летить в зал. За кожну пістню мінімум 10-15 медіаторів летіло. В середньому за концерт мабуть пару сотень розкидав.
Ну і звісно всі ці задирання гітари в небо, замирання в живописних позах, махання ногами і вишкіряння в зал. Грав маестро на білому Фендері Стратокастері. Вірніше їх у нього було декілька однакових і після кожної пісні він міняв гітару – струни розстраювалися від використання “машини” (це ричаг який дозволяє натягувати/послабляти струни).

Під кінець Інгві зовсім розійшовся і грав і за головою, і за спиною, і по підлозі гітару тягав крутячи ручки на педалях. Ну і завершилося все тим що гітару він розгатив вщент об сцену.
І хоча таку музику я багато не слухаю (мені той же Стів Вай набагато ближчий) концерт сподобався. І головне все що було зіграно і все що відбувалося на сцені виглядало натурально і органічно. Хороший був концерт.

От щось типу такого було:
[youtube=https://www.youtube.com/watch?v=GAeyhl3UVRE]

А після концерту ми пішли забирати машину з парковки і там сталася невеличка пригода. То виявляється була парковка магазину (у підвали висотного будинку) яка закривається металевими воротами об 11 вечора, а ми прийшли туди о 11:30. Ну і звісно про це повідомляла крихітна табличка на в’їзді яку ми просто не помітили коли паркувалися. Поки я ходив навколо шукаючи хоч когось хто міг би допомогти нам забрати машину (альтернатива – повернутися вранці) Олена потрапила всередину коли заїхала якась машина когось із мешканців хто живе в тому будинку. А потім вона дзвонить мені перелякана і ледь не плаче що її закрили на парковці. Я потрапив всередину з іншою машиною що трапилася і ми змогли виїхати додому. До речі вартість вечірньої парковки в центрі Сіетлу – $16. Ну от і все.

Дорога і крута сокочавилка Hurom 100S

Мова піде про Hurom Slow Juicer HU-100S ціною в ~$360.

Всі ми знаємо/чули про користь та неймовірну смачність свіже вичавлених соків. Стосовно смачності треба сказати що знайти хороші рецепти які б вам подобалися не так і легко. Справа в тому що в магазинських соках (чи “нектарах” як сором’язливо називають напої з порошку) додано необхідну кількість цукру, фарбників та смакових добавок щоб задовольняти смакам споживачів. А з “натуральними” соками ви часто будете отримувати результат набагато гірший за смаком за магазинні соки: то занадто водянисте, то слизьке якесь, то гіркуватий присмак, то просто несмачно.

До того ж на відміну від соків тривалого зберігання свіже вичавлені соки за лічені хвилини розшаровуються на воду (більша частина стакану) та осад з “гущі” і виглядають далеко не так красиво як хотілося б. Тому їх треба пити одразу після вичавлювання та колотити. А за 10 хвилин їх взагалі варто вилити, зберігати не вийде.

Що стосується машинок для вичавлювання соку то далі напишу про переваги нашої машинки.

Перше і мабуть головне це те що її неймовірно легко збирати, розбирати і мити. Збирається вона з кількох великих частин: ріжуча сітка, чавилка, ємність в якій це все стоїть та кришка, ну і пара ємностей для соку і відходів відповідно. Зібрати/розібрати навіть перший раз займає буквально пару хвилин. А що стосується миття (це вже друга перевага) то все легко відмивається буквально за секунди під звичайним краном. Єдине що від деяких фруктів ріжучу сітку треба буде вичистити щіткою.

Ще один плюс – машинка працює дуже тихо (дивіться відео), в сусідній кімнаті її не чути. Можливо це завдяки тому що вона (як і вказано у назві) “повільна” – чавильний винт обертається дуже повільно.

Машинка чавить практично усе, але фрукти/овочі треба різати на шматочки не більші за пару сірникових коробків. Проте з деякими речами типу селери чи калі машинка впоратися не може – забивається ріжуча сітка.

Вичавлені залишки дуже сухі і їх можна сміливо кидати у сміття не замотуючи додатково в пакет – не завоняються, там нічому воняти вже.

Сок вище на фото як я і казав поділено на шари навіть одразу після вичавлення. Єдине що забув згадати про піну яка дуже довго не спадає, тому колотити і перемішувати обов’язково.

Зі знайдених рецептів можу поділитися декількома речами:

  • шпинат, як це не дивно, добре підходить і для фруктових і для овочевих соків і додає якоїсь фактурності без впливу на смак. Рекомендую додавати куди тільки можна.
  • те ж саме стосується і бананів. Банан взагалі варто додавати у фруктові соки без винятків – без нього виходить усе занадто водянистим.
  • неймовірно смачним є сік з апельсинів та моркви (маленьких морквинок). Спробуйте, гарантую що сподобається.
  • не робіть соки наперед – вони довго не стоять навіть у холодильнику і за кілька хвилин втрачають і вигляд і на смак стають як суміш води з фруктовою/овочевою гущею. Підозрюю що для зберігання треба додавати в соки сіль чи цукор.

Чи варта ця сокочавилка своєї ціни? Важко сказати. З одного боку треба визнати що ціна дуже висока, і купили ми її під впливом імпульсу прочитавши хороші відгуки. А з іншого боку навряд чи можна знайти щось подібне де збірка/розбірка, а головне чистка здійснюється настільки просто. Не знаю навіть. Як ви думаєте?

А які рецепти знаєте ви? І чи взагалі займаєтеся подібним?

Відео внизу як кажуть знімав на тапочок, так що за якість вибачайте: