Default enum field value in protobuf

Enums in protobuf seem pretty obvious. However some of the behaviors are not that simple.

Lets say we have proto:

enum Type {
 ADMIN = 0;
 REGULAR = 1;
}

message User {
 optional Type type = 1;
}

And simple Java code:

User user = User.newBuilder().build();
System.out.println("Has Type: " + user.hasType());
System.out.println("Type: " + user.getType());

Well, field value is optional. So as a Java developer I would expect hasType to return false and getType to return null. However the real output is:

Has Type: false
Type: ADMIN

Why?

public Message.Type getType() {
 Message.Type result = Message.Type.forNumber(type_);
 return result == null ? Message.Type.ADMIN : result;
}

Conclusion: know your libraries and check auto-generated code

Posted in Development, Uncategorized | Tagged , | Leave a comment

JEEConf 2016

Впервые в жизни скатался на JEEConf. Как было? Если одним словом – круто. На самом деле.

Теперь подробнее.

Билеты мы купили одними из первых, хотя карты всех(!) белорусских банков отказывались работать с предлагаемой платежной системой. Но все-таки пяток писем и помощь организаторов – и билеты куплены. А тут и Белавиа порадовала скидками, так что билеты на самолет оказались дешевле билетов на на поезд. No way, нужно было ехать.

В пятницу утром Саша Соболь заехал за мной и мы почесали в аэропорт. В этот раз я узнал что в аэропорту Минск-2 есть бесплатная неохраняемая парковка. Стремновато, конечно, за машину, но, с другой стороны, кому нужны наши рыдванчики?🙂

В аэропорту возникли проблемы с погранцами. Те собрались вчетвером и коллективно решали выпускать меня из Беларуси или не выпускать. Все-таки выпустили и я даже успел на самолет. Всего 50 минут полета и ты в другой стране. Киев встретил нас солнышком, вонючим автобусом Skybus и комиссией в 10% за снятие денег в банкомате. Полчаса на автобусе, 40 минут на метро, дорога через митингующую площадь Конституции и мы – на конференции.

Быстрая регистрация и два пропущенных доклада. Отстой, но будем досматривать потом. А потом начались доклады:

Day 1

Можно ли рассказать о юнит-тестах интересно? Абсолютно. Новые фишки-свежачки JUnit 5, мотивация принятия тех или иных определенных архитектурных решений. И JUnit становится больше, чем просто библиотекой для тестирования: метят в полноценную платформу. Просто посмотрите данный доклад, когда он появится в сети. Саша, конечно, сидел и бубнел на ухо, что Spock и вон то умеет, и вон то. Но даже он под конец затих и сказал что было зачетно.
TODO:
  1. Проверить как @Nested работает в совокупности с @RunWith
  2. Проверить как работают @Rule и что будет если таких правил несколько
  3. Посмотреть на MockitoJUnitRule
  4. Поиграться с @ExtendWith
  5. Посмотреть для чего используется @Tag
  6. Посмотреть как работает Dynamic Test Generation
  7. Посмотреть что такое Hamcrest
  8. Поиграться с junit-console, и узнать, есть ли что-то вроде “–countinious”
Небольшой lightning talk как раз по теме вверху. Отличное построение от простого к сложному. Мне понравилось.
TODO:
  1. Вспомнить принцип подстановки Барбары Лисков

Counter Wars, or 100500 ways to shoot yourself in the foot when implementing thread-safe counter – Alexey Fyodorov

Алексей немного поумерил обычный JUG.RUшный пыл в плане “железных счетчиков” и “интринзиков”. И получился очень годный доклад. Постепенно, от простого, к вещам посложнее. Но интересно и практично. А еще спасибо за честность. Никакие оптимизации на уровне JVM и пара наносекунд не помогут если код пишется как попало.
TODO:
  1. Поиграться с taskset под Linux
  2. Подписаться на mechanical-sympathy
  3. Посмотреть по L1/L2/L3 кэшам процессора
  4. Посмотреть алгоритмы когерентности кэшей
  5. Узнать, есть ли Azul JDK под Linux x64 и поиграться немножко
  6. Посмотреть доклад Volker Simonis по JVM Intrinsics
  7. Прочитать Brian Goetz “Java Concurrency in Practice” и, возможно, что-то посвежее
И снова классный доклад от Николая. Честно и открыто сказано что пути из JAR Hell не нашлось, по меньшей мере в JDK 9. Вполне детально и толково рассказано о том, как устроена система модулей и варианты ее использования. Существенная часть доклада уделена миграции.
TODO:
  1. Почитать “The Java Module System In Action” когда она выйдет. После такого достойного доклада сразу же захотелось.
  2. Поковырять JEP 260
  3. Поковырять JEP 261
  4. Поковырять JEP 223
  5. Понять, как же все-таки будет работать в этой модульной системе что-то вроде автосканирования классов Spring или маппинг Hibernate
Hibernate, how the magic is really done? – Mikalai Alimenkou and Igor Dmitriev
Этот доклад закрывал для меня первый день. И он оказался каким-то “капитанским” что ли, разве что рекламировал следующий доклад, связанный уже с оптимизацией. Какие-то банальные истины без особой новизны.
TODO:
  1. Посмотреть extra lazy в Hibernate
  2. Поковырять LazyCollectionOption
  3. Проверить, включен ли у нас Hibernate Dirty Checking Enhancer
  4. Пристальнее взглянуть на Lombok

Day 2

День после пьянки всегда начинается непросто, и тут было нелегко. Дмитрий на абсолютно бесцветных и местами корявых слайдах показывал не самые простые концепции вроде распределенных транзакций. Но получилось вполне зачетно. Мозг вынырнул из коматоза и ему стало интересно.
 
TODO:
  1. Посмотреть есть ли варианты двухфазного коммита в связке Cassandra + MySQL
  2. Поковырять методы XAResource
  3. Посмотреть алгоритмы распределенных транзакций
  4. Посмотреть как работают Atomikos/Bitronix с Tomcat
  5. Вспомнить про JDO
  6. Проверить слова Дмитрия насчет try/catch + rollback
  7. Вспомнить уровни изоляции, поддерживаемые в MySQL
  8. Посмотреть becomejavasenior.com
Для меня, в последнее время работающего со Спрингом на довольно простом уровне было любопытно посмотреть на некоторые новые плюшки из JavaEE. Некоторые паттерны были абсолютно тривиальны, а вот некоторые – выглядели довольно любопытно.
TODO:
  1. Почитать книгу “JavaEE Design Patterns”
  2. Посмотреть документацию по аннотации @StartUp
  3. Посмотреть документацию по аннотации @DependsOn
  4. Посмотреть документацию по аннотации @ConcurrencyManagement
  5. Посмотреть документацию по аннотации @LockType
  6. Посмотреть документацию по аннотации @Decorator
  7. Посмотреть документацию по аннотации @Delegate
Introduction to Akka Streams – Dmytro Mantula
Ооооочень основательный доклад. Первых 25 минут(засекал) докладчик постепенно подводил к Akka Streams, причем из таких дальних далей. что ого-го. Казалось что уже ничего нового и не будет. На Akka Streams осталось всего минут 20. Но эта основательность и логичное наращивание материала сработали просто отменно. Один из лучших докладов из тех, что я посетил
TODO:
  1. Вчитаться в Reactive Manifest
  2. Подумать над принципом Back Pressure
  3. Поковырять JEP-266
  4. Пройти “Principles of Reactive Programming” на Coursera
Hibernate performance tuning – Mikalai Alimenkou and Igor Dmitriev
Данный доклад был явно полезнее, чем предыдущий от той же пары докладчиков. Вынес для себя парочку тулов и механизмов в Hibernate, о которых раньше не слышал
TODO:
  1. Поковырять datasource-proxy
  2. Поковырять p6spy
  3. Посмотреть текущую реализацию пула соединений в проекте
  4. Почитать про @NamedEntityGraph
  5. Посмотреть @DynamicInsert/@DynamicUpdate
  6. “ORDER BY NULL” в MySQL – WTF?

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

TODO:
  1. Посмотреть на SockJS
The Dark Side of Micro-Services – Nicolas Fränkel
Отличный доклад от отличного дядьки. Очень прагматично, очень по-инженерному и очень по делу. Микросервисы предоставляют не только возможности, но и требования: к бизнесу, к команде. Трезвый взгляд на вещи среди кучи маркетинговой шелухи.
TODO:
  1. Поиграться с Hystrix
  2. Поиграться с Ribbon
  3. Поиграться с Eureka
  4. Подписаться на дядьку

Какие доклады стоят в очереди на просмотр:

  1. Reactive Thinking in Java – Yakov Fain
  2. Java EE 8: What Servlet 4.0 and HTTP/2 mean to you – Alex Theedom
  3. What Mr. Spock would possibly say about modern unit testing: pragmatic and emotional overview – Yaroslav Yermilov
  4. Everything I Ever Learned About JVM Performance Tuning at Twitter – Attila Szegedi
  5. HotSpot Intrinsics – Volker Simonis
  6. Hotspot & AOT – Dmitry Chuyko
  7. Hot and spicy Java with Lombok. Live! – Vladimir Tsukur
  8. How Immutability Helps in OOP – Yegor Bugayenko
  9. The Post-Apocalyptic sun.misc.Unsafe World – Christoph Engelbert
  10. The Road to Reactive with RxJava – Frank Lyaruu
  11. Spring Boot under the Cover– Nicolas Fränkel
  12. Types war: Weak vs Strong – Victor Polischuk
  13. ORM is an Offensive Anti-Pattern – Yegor Bugayenko

Ну что ж, на доклады посмотрели. А что же запомнилось кроме докладов?

Соцпакет

Базовый соцпакет включал в себя: плотный пакетик, ручку, блокнотик и пачку ненужных бумажек. Дочки сразу оценили прочность пакетика по приезду и стали носить в нем свое девичье барахло. Ручка оказалась необычной. Внутри было что-то вроде небольшого лабиринта и пара шариков, которые можно было гонять на скучных докладах. Но таких докладов оказалось немного, зато позвякивание шариков стало раздражать, когда просто записываешь идеи. А вот блокнот был четким и, на первый взгляд, огромным. Да и на второй тоже. Зато в нем было все что надо. И программа, и карта помещений, и места для записей под каждый доклад. Программа содержала ссылку на страничку с описание доклада. Вообще удивительно удобно, но все равно блокнот просто огромен. На каждый доклад были отведены страничка описания и три странички под записи. Мне кажется, можно было бы сделать блокнот вдвое меньше урезав описание до половины странички, а место для заметок для полутора. Лично у меня записи по редкому докладу не умещались в полстраницы.

Питание

Кейтеринг был довольно хорош. Особенно кофе/чай часть, печеньки, уборка. Мусор и пустые тарелки исчезали очень быстро, даже быстрее чем иногда хотелось бы. Обед был построен в два потока. Кстати, обед был не очень разнообразным. На выбор предлагался пластиковый контейнер с рыбой, мясом и овощами и пластиковыми приборами. Плюс салатик. Непритязательно, но довольно вкусно. Плюс компот и лимонад у девушек за кофейными автоматами. Использование одноразовых контейнеров, в которые изначально была упакована еда, позволила нормально провести обед для всех участников за одну сессию вместо двух. По итогу мы, как удавы, валялись и балдели вторую половину обеда на терассе.

Whiskey Party

Никогда не любил подобные мероприятия. Как оказалось – зря. Спасибо огроменное днипрянам Ивану, Юле, Леше и Саше за компанию, а Антону из Киева – отдельный пламенный привет. Жутко приятно проводить время с такими замечательными человеками!

Место проведения

Довольно удобное местоположение. До Майдана минут 10 пешком, и в то же время как-то на отшибе, в парковой зоне. Охранники – относительно дружелюбные. Отличная веранда, где можно было поваляться на “груше” и посмотреть в небо. Разве что лестницы были какие-то неявные, эскалаторы были основным путем перемещения между этажами. Основная претензия к месту проведения оказалась в залах. Никакого уклона и докладчик на уровне зрителей приводили к тому, что нижняя часть слайдов не была видна из-за голов. Дополнительные мониторы, конечно спасали ситуацию, но все равно не то. Зато основные экраны были не на базе проекторов, а полноценными большущими ЖК. Цветопередача просто несравнима. Логистика передвижения между залами была простая и понятная. На каждом зале висел список докладов в этом треке и это было удобно. Разве что можно сделать шрифт побольше, для таких подслеповатых куриц, как я.

Формат

Сам формат в виде “пятница плюс суббота” лично мне, как иногороднему, очень нравится. Он позволяет без особых сомнений отставить второй выходной для прогулок по городу. А в Киеве есть где погулять! Город просто шикарен, особенно весной.

Вывод

Понравилось практически все. Доклады довольно практичные, хотя некоторые жалуются что техническую планку в этом году снизили. Есть что поковырять на ближайшие  В Минск привезена пачка технических идей по нашему продукту и неплохо расширен кругозор. А еще просто было очень приятно ездить с Сашей🙂

Posted in Conference, Education, Uncategorized | Leave a comment

Continious testing

Today I was trying to implement some ideas from JetConf 2016 on our project.

We have a pretty large project with around 2000 classes and 1500 unit tests. Build process is built on Gradle. My idea was to have continuous tests running to be sure that I see test failures right away.

So I installed infinitest plugin for IntelliJ which immediately brought IDE to the knees. Extending compiler memory helped for some reason however Infinitest seemed stuck somewhere in the 1/4 of our suite. So far so good. Various forums have shown that others didn’t get much success with Gradle, IntelliJ IDEA and Infinitest.

So I found out that versions of Gradle since 2.5+ have continuous build mode. Well it works. If I run “gradle -t test” – the changes in source files are correctly detected and tests are rerun. But it’s not smart. It reruns all of the tests while I hoped for the best. It does not detect source code changes precisely to rerun only unit tests which were affected. So continuous mode in Gradle should be pretty useful for continuous builds and deployment but not for precise continuous testing.

Posted in Development, Uncategorized | Tagged , , | Leave a comment

JetConf 2016

Ну што, па гарачых слядах, ды пра JetConf 2016.

Штогод я разы па два катаюся па розныя канферэнцыі. Звычайна гэта канферэнцыі JUG.RU кшталту Joker і JavaPoint. Гэтым разам я вырашыў далека не ездзіць. Тым больш што мае жаданне наведаць канфу падтрымалі калегі з Fitbit Bel. Цікава было параўнаць беларускую рэчаіснасць з тым, што я ўжо бачыў. Есць меркаванне што якасць беларускіх канферэнцый пакідае жадаць лепшага. Так ці не так – паглядзім.

Квіткі супрацоўнікам на канферэнцыю праставіла ўсе тая ж цудоўная Fitbit Bel.

Не схлушу, калі скажу што было крыху незвычайна. Звычайна ты трасешся у цягніку ўсю ноч, альбо ўвесь ранак у самалеце ды бавіш час у аэрапорце. А тут – прыгажосць: сеў на машыну і праз паўгадзіны ты на канферэнцыі. Беларусы, не менш пунктуальныя за немцаў, пачалі збірацца ці не за паўгадзіны да пачатку рэгістрацыі. І стойкі рэгістрацыі пачалі працаваць раней за пазначаных 10 гадзін раніцы. Чэргі былі зусім невялікія і crew працавала дастойна. Камплект выданы арганізатарамі быў дастатковы:
1. Блакнот – фармат і папера – классныя, аркушаў можа і зашмат. Адно аркушы адваліліся ад асновы даволі хутка.
2. Ручка – завялікая і ня надта зручная, як на мой густ
3. Сумка. Нішто не заменіць сапраўдны дэвелаперскі рукзак🙂, але можа каму падабаюцца.
4. Расклад канферэнцыі са спонсарамі на адваротным баку. Аркуш памерам А4 можна было зрабіць значна меншым і больш зручным для карыстання.
5. Налепкі. Налепка JetConf была файная, але замалая як на мяне. А вось jug.by – ня надта юзабельная. Калі эмблема круглая – лепей адмыслова зрабіць круглую насечку па контуры.
6. Паперкі ад спонсараў. Як звычайна, нічога звыш.
Невялічкі агляд стэндаў спонсараў не завабіў нішцякамі, таму пачалі чакаць Баруха і keynote.

Ну што ж возьмемся за даклады.

Baruch Sadogursky – Developing Modular Software: Welcome to Hell!

Ну што ж, Барух – карысны, але ў якасці спікера і ў абмежаванай колькасці. Скажу, што keynote мне прыйшоўся даспадобы. Нячаста ў штодзенным жыцці ты для сябе падымаеш больш глабальныя пытанні. Часам трэба ўзняцца крыху вышэй і зірнуць на экасістэму зверху. Слайды, як заўжды, ня сорамна паказаць і на Devoxx. Цікава, шырока і даволі змястоўна. Яшчэ адна заўвага пра наведнікаў: цяжкавата нават Баруху прыйшлося, расшавяліць натоўп ціхіх мышак-праграмістаў, да таго ж беларусаў, ох як няпроста.🙂

TODO:
1. Праверыць тэзіс Баруха пра тое, што security патчы не бампаюць версіі пакетаў Ubuntu
2. Хто можа паблішыць пакеты кшталту commons-lang на Maven Central
3. Maven – рэальнасць repository XSS
4. Docker на дамашнім праекце паспрабаваць
5. Пачытаць @real_jbaruch
6. Паглядзець што-небудзь з Rowan Atkinson

Andrus Adamchik – No container: a Modern Java Stack with Bootique

Андрусь распачаў сезон велабудаўніцтва на JetConf. Гаворка ішла пра Bootique, які з’яўляецца нечым сярэднім паміж public static void main і Spring Boot. Адзін былы каллега зрабіў свой сапраўдны кастомны велік. Ездзіў той няблага, дык чаму б і не. Мне спадабаўся сапраўдны кантроль над рознымі аспектамі і адзіны YAML файлік канфігурацыі для ўсяго, які можа падгружацца па URL. Але мэтазгоднасць выкарыстання Bootique замест самастойнага дакручвання main выклікае пытанні. Ўвогуле лэйбачка “кантрыб’ютар Apache” для мяне гэта сапраўдныя +100 да аўтарытэта распрацоўшчыка.

TODO:
1. Паспрабаваць перанесці Decomposer на Bootique і ацаніць мэтазгоднасць фрэймворку для сябе.

Tomasz Borek – Advanced Testing Tools

Нечакана карысны даклад, хаця і патрапіў на яго выпадкова. Сессія з Кассандрай перанеслася крыху пазней. Шмат пра што паспрабаваў расказваць Томаш. Тут і TestNG, і JUnit Zohhak, i JUnitParams, і JUnit Theories, i Soft Assertions, i Sonar, i Gauge, i Infinitest, i WireMock. Нібы адкрылі мне вочы на цэлы сусвет тулоў для зручнага тэсцінга.i І да таго ж прэзентацыя адбывалася на Debian GNU/Linux. Для мяне гэты даклад апынуўся найцікавейшым на канферэнцыі.

TODO:
0. Наладзіць Infinitest на працы
1. Паспрабаваць TestNG нармальна
2. Паспрабаваць JUnit Zohhak
3. Паспрабаваць JUnitParams
4. Паспрабаваць JUnit Theories
5. Паспрабаваць Soft Assertions ў TestNG
6. Паспрабаваць Sonar
7. Паспрабаваць Gauge
8. Паспрабаваць WireMock

Yegor Bugayenko – An Immutable Object-Oriented Web Framework

Сезон велабудаўніцтва на JetConf працягваўся. Дакладчык паказваў Immutable Web Framework на Java пад назвай Takes. Як і ў выпадку з NodeJS, пад прыгожай абалонкай дэкларатыўнага функцыянальнага/ООП праграмавання працуе звычайны імператыўны код. Сапраўды, даволі прыгожа і даволі абстрактна, але ці ж рэальна? Некаторыя тэзісы кшталту “10-20 канструктараў і тры метады у класе” альбо “ООП гэта для бізнэса” выглядаюць як мінімум спрэчна.

TODO:
1. Набыць кнігу yegor256 і стаць адэптам новай секты ООП

DuyHai Doan – Apache Cassandra 3 New Cool Features

Паважаны Doan, я разумею што з далекай Францыі Беларусь выглядае маленькай кропачкай і губляецца на целе “Матушкі Россіі”. Я таксама разумею што Вы – евангіліст і не абавязаны ведаць шмат чаго. Але гэты выступ мяне крыху збянтэжыў. Знаходзіць у адказ на пытанне нейкую PDF і чытаць з яе – гэта занадта. Безальтэрнатыўны пераможца намінацыі “Найгоршы даклад JetConf 2016” па маей версіі.

TODO:
1. Паразбірацца з Row Caching у Cassandra
2. Паразбірацца з Suffix Trees

Sebastian Malaca – How to get rid of Obsession?

Неблагі даклад пра караблі які амаль быў сапсаваны даволі благой ангельскай мовай дакладчыка. Але зачапіла. Сапраўды, шмат капітанства, але гэта тое, што ты бачыш у сваей камандзе штодня. Перфекцыянізм, пазіцыя “Я – Д’Артаньян”, “найлепшая ідэя” ды іншыя obsessions. Таму і цікава, што гэта пра цябе, пра вашу каманду. Зразумела, ў нас няма дурацкіх мэтаў кшталту 100% пакрыцця кода юніт-тэстамі, але часам вось гэтага “трэба проста спыніцца” сапраўды не хапае.

TODO:
1. Пачытаць пра Law of Demeter

Ну што ж, мае агульныя думкі пра даклады. Не было хардкору. Наогул. Былі дэмкі фрэймворкаў, былі агульныя разважанні. Хардкору – не было, ці я проста не патрапіў. Дакладчыкі былі падрыхтаваныя няблага, але слайды трэбы разглядаць паасобку, бо розніца сапраўды вялікая. Наогул, узровень дакладаў відавочна ніжэйшы за даклады на канферэнцыях, што арганізуе JUG.RU.

Магчыма вы заўважылі што не было ані слова пра ежу. Чамусьці, мне падалося, што арганізатары планавалі абед замест чаю/кавы з печывам. Насамрэч чай з печывам былі, і даволі смачныя, а абеду – не было. Ну ды ладна, есць жа у Arena City фуд-корт. Было б вельмі крута калі б ен быў падрыхтаваны да такой колькасці наведнікаў. Сушы – за 25 хвілін, а лапша – за 35? Гэта занадта. Чэрга за піццай ці за бургерам, ў якой трэба прастаяць 20 хвілін? Ну гэта ж не адкрыцце першага Макдональдса ў СССР! Быў вымушаны спазніцца на пачатак дакладу.

Калі падагуліць:

Плюсы:
1. Блізка і зручна
2. Камфортныя залі
3. Наяўнасць не толькі тэхнічных дакладаў
4. Даволі добрая арганізацыя канферэнцыі
5. Адсутнасць маштабных тэхнічных праблем якія б заважалі дакладам

Над чым варта папрацаваць:
1. Хардкорнасць дакладаў
2. Дрэнныя лазерныя ўказкі
3. Непадрыхтаванасць фуд-корта да колькасці наведнікаў
4. Інфармацыя на экранах даволі часта была неактуальнай. Хацелася б бачыць і папярэдні, і наступныя даклады ў гэтай залі

Ну а насамрэч – нядрэнна. Цяжка нават уявіць, наколькі складана зрабіць канферэнцыю гэткага кшталту ў Мінску на дастойным узроўні. Таму шчырае дзякуй Дзмітрыю і Кацярыне за магчымасць не несціся ў іншыя краіны ў пошуках карыснай інфы. Цяжка нават уявіць колькі часу і нерваў спатрэбілася на ўсю арганізацыю. Замест таго каб ныць, казаць пра паныласць канферэнцыі і складваць лапкі – думаю, варта што небудзь зрабіць. Асабіста я спадзяюся з’арганізаваць камрадаў з Fitbit і выставіць 1-2 даклады ад нас на JetConf 2017. Паглядзім, ці атрымаецца.

Posted in Conference, Education, Personal, Uncategorized | 3 Comments

Logical and Critical Thinking MOOC

The course is amazing. I really appreciate work which was done by the MOOC team. The topic itself might seem rather dull. However the way it was presented made me a really happy panda student.
It took around one hour a week to view all of the videos and accomplish quizzes. What I really liked – guys were presenting real-world examples and real-world New Zealand nature.
The important lesson to be learned from this MOOC is that I’m not a good critical thinker. I have some minor things in my toolchain but not the general critical vision. It’s definitely true that I’m way less objective about ideas and thing I personally like.
Why do I personally care about this stuff? It’s all about goals in my life. Different books on focus  and time management teach you how to achieve goals. While this MOOC helps you understanding whether these goals are really important for you. You might blindly follow some ideas or socially approved behaviors without clear understanding whether you really need it. So for me this course is really important to become a more skeptical and critical thinker about myself and my personal goals.

It’s definitely a very cool useful MOOC with the really high usefulness/time ratio.

Posted in Education, Personal | Leave a comment

Advanced Data Structures in Java MOOC

Algorithmic side of things is definitely my weak part. Why not getting a bit better even if you’re in the industry for twelve years already?

So I decided to start “Advanced Data Structures in Java” MOOC on Coursera to get more graph knowledge. It was not really difficult. Videos were reasonably descriptive and didn’t take much time especially given that they could reasonably viewed on 1.25x in less than an hour a week. Programming tasks were not complex really(less than 2 hours a week), however provided some insight into the graph and graph-related algorythms. Peer review was a rather interesting experience too.

The MOOC is definitely worth spending time.

Posted in Education, Uncategorized | Leave a comment

Teaching Magnolia CMS course

Decided to provide some a 4-day Magnolia CMS course which I was teaching last autumn. In general I had some experience teaching both students and some of my colleagues. I really enjoy doing this. However in previous cases it looked pretty amateurish.

So I was very surprised to get a proposal from Adamantium to teach a Magnolia CMS course on their base. Format proposed was really different from the format I usually work in. They proposed to do a 4-day full fledged course with 7 hours a day to ramp the audience up.

So I agreed and decided to spend part of my vacations on this activity. I was slightly scared given that it was a totally new approach for me. But I really liked full dive into the technology without interruptions.

All of the materials can be found here:

  1. Source code
  2. Presentations (in Russian)

It was a really nice experience for all sides of the teaching process and it was pleasant to hear such a good feedback. It appears I really like teaching people,  presumptuous bastard. Definitely looking forward to extend my teaching and consulting experience in future.

Posted in Education, Personal, Uncategorized | Leave a comment