WebStorm (or Visual Studio Code), React, Redux and jsdoc

When I started using PhpStorm many years ago, it changed the way I experience coding. The project started feeling differently: instead of a multitude of text files, where I had to use global search, global replace a lot – I used TextPad back then, great tool it was, considering Macros feature that worked really well actually, – that changed completely when the code became clickable, it started feeling like an interconnected entity, a single unit where files, classes, interfaces, variables, namespaces – all of this vocabulary was really understood by the IDE, and it supported you with features like Go To Declaration and Find Usages. It’s completely indispensable when writing in modern PHP, which is a great object-oriented language in my, however unpopular opinion.

There’s no more money in PHP though, all web in mobile and probably even VR and data and robotics and AR and 3D-modelling – as someone wise said, “if it can be rewritten in Javascript, it will be, soon”.

Javascript is really great nowadays with ES6 standard – still a pretty weird language with all `this` nonsense, and a few other quirks, but overall is increasingly enjoyable to work with, because of the thriving ecosystem, built with the brain-power of the tech giants involved in the Browsers War competition for years.

I started working with this new framework called Electrode, and it’s basically a powerful opinionated build tool around React, Redux, Webpack, SSR, PWA. Nice combination. A little rough around the corners, but gets the job done. Wasn’t my decision to use, but seems like great stuff indeed. All for free of course, but we’re kind of used to that by now, don’t we? Telling you, us tech geeks have taken over the world and just piling up the shared wealth now.

In Meteor, I always insisted on writing clickable code – makes maintenance a no-brainer even when you feel a little slow at the moment, it’s just so easy when you have your API one keystroke away at all times, and you can travel in and out, back and forth. Maps it out in my brain better than a visual diagram, it’s almost a visceral feeling.

Anyway, here’s the way I write my React and Redux.

TODO: code and links.

Why Kanban is better than Scrum

I think Kanban is much superior to Scrum. This position sometimes is attacked so viciously, that it’s hard to have a productive conversation about it – at least some people defending Scrum remind me of believers, who will protect their dogma at all costs. But this debate doesn’t have to be unfriendly, it’s just a rational decision that every project has to make, and my personal opinion is that Kanban beats Scrum in every respect we should care about. Which is to say, just two things: productivity and predictability. I would argue that nothing else is important, and whichever management framework gives us better productivity while providing enough predictability – wins.

Before comparing the 2 systems, let me just make it clear that it’s not only my opinion. Kanban is the framework of choice in many software projects. Here’s a great short article, here’s a longer and more detailed success story, and here’s a talk on Iterationless Kanban and Continuous Deployment that blew my mind many years ago.


What gives business a competitive advantage is ability to be nimble. Software project mutates continuously and it goes basically like this:

  1. Business stakeholders come up with an idea
  2. The team gets it done
  3. Implementation code gets pushed to production
  4. Business gathers feedback
  5. Go to 1

Clearly, in any given project, what we want our management framework to improve is the speed of 2. I would argue that Kanban ensures the lowest possible time spent in step 2, which makes it the best system. Here’s why.

In Scrum, we try to time-box work into Sprints – artificial iterations of a fixed length, normally 1 or 2 weeks. The idea is that by time-boxing we can commit to delivering certain stories. This commitment idea is an illusion, but let’s look at the cost we have to pay for time-boxing in terms of productivity loss first.

So we have a team, and developers are in the time-boxed iteration. No matter how good your estimates are, some devs will finish their tasks before the sprint is over, and some devs will fail to deliver their tasks on time. Both cases are inevitable, will happen on almost every sprint, and both have an associated cost.

For the dev who finished the work earlier, he or she will have to pull a task he never really looked into deeply enough, because the task was never assigned to him, he never really took ownership. In Kanban, as a developer, you always work on the highest-priority task in your pipeline – the one you take responsibility to estimate carefully, so you get familiarised with every task and make sure that if there are any questions you iron them out with the product owner and other team members well before it hits your “In Progress” column. By contrast, in Scrum, as a developer you inevitably end up having to start on tasks that are, firstly, not ideal for you (it’s just a random leftover task from the current iteration), and secondly, are not familiar to you. This contrast is especially stark when seen through the eyes of a developer. The lateral movement of tickets kills motivation to familiarise oneself with tasks – what’s the point figuring it out carefully, if it’s going to be taken away from you and assigned to someone else by the end of sprint? This never happens in Kanban, because your task is your task.

By the way, the very term Sprint illuminates the flawed nature of Scrum philosophy – software development should not resemble sprinting. Sprinting is high-intensity, short exertion of energy – you basically run for 50 meters and then you rest. Sprinting is only done in the context of exercise or athletic competition. I’d say hiking is a much better analogy – you have a long way to go to reach your goal, you walk for 8+ hours every day, and you have to sustain the pace and direction for months and years at a time. Sprinting won’t get you far! Another useful analogy is gardening – software development is very much like gardening, you cultivate it, it grows, it evolves into sometimes strange shapes that you have to trim, and you plant some seeds into prepared soil, and you give it your caring attention every day, and you enjoy the flowers and harvest the fruits, and protect it from the bugs. Sprinting is just the worst analogy ever. Anyway…

For the second situation, when we have tasks not finished during the sprint, there’s a managerial cost involved – those tasks have to be moved to the next sprint and possibly re-prioritized, re-estimated, and some of the previously planned work for the upcoming sprint has to be squeezed out from the sprint. Not a lot of effort, but 100% of it is waste, with no benefit to the project.

The idea that the team will commit to the tickets is also flawed. You can call it “commitment”, but it’s not really it – there are no rewards, no punishments, no dev really cares if some tasks have to be pushed to the next sprint, or some tasks have to be pulled from the next sprint, what’s the difference? The best we can ever do as a team, and what this “commitment” is in reality, is we break the work down into tickets, we try to estimate them to the best of our ability, we prioritise them – and then we can predict the future with some degree of confidence. Both Scrum and Kanban frameworks do this similarly, the practical difference is in the way those predictions are made available to the business people: Scrum can only say at the beginning of every iteration “we will deliver tickets A, B, C by date D” (D being the end of the sprint), and Kanban can provide exactly the same reporting format, but it’s more flexible: it can also give an expected date of delivery for any specific ticket on the board (and therefore, any specific story). From my experience, this is a much more useful format. All estimates are always up-to-date, every day. When things change – some task takes longer to finish, developers take unexpected days off, urgent tasks come up, – the board changes basically in real-time, so the feedback loop is as short as it can ever be. It also allows for true continuous delivery – we can push to production every day and be the most Agile possible. Anything less than this is artificial reduction of team productivity and goes against the Lean philosophy that we all know and love. Or at least we should.

There’s also, of course, a stream of high-priority tasks, usually bugs, that have to be squeezed in and fixed as high-priority items. This doesn’t disturb Kanban process one bit, Kanban is made for this: just put the ticket on the board, assign it to the best developer in the right priority, and the management effort is done. For Scrum though, this can be a source of much stress, because of the perceived danger: omg we are not going to follow through on our commitment! Management goes into fire-fighting mode, puts unnecessary pressure on the team, makes panicked decisions of all sorts and renders the whole process unfun. Happy developers are more productive, so this can be a huge productivity and motivation killer. Also, it burns you out and when the real fires come, you have no energy to fight them anymore.


It is true that Scrum process can be a little more predictable. I would argue that the degree of just how much more predictable is very low, and the impact of this small improvement in predictability is also quite small, certainly not worth the cost lost in productivity.

The reason Scrum can be more predictable is because it has the concept of “protecting the Sprint” – the idea that the team (represented by Scrum Master) should resist putting more tasks into the sprint so as to not disturb the flow of development. Team should also “under-commit and over-deliver”. So we can predict with a slightly higher degree of confidence which tasks will get done within an iteration.

It’s important to understand just where exactly this slight increase in predictability is coming from: we have to say no to unexpected high-priority tasks that come up during the sprint. This makes the business slower, less Agile, less Lean. Let me repeat this so it resonates: to “protect the Sprint” we knowingly ignore high-priority tasks in favour of lower-priority tasks. This is almost the definition of sabotage.

And how important is predictability anyway? You have to have some predictability, just to be able to plan public releases, presentations, meetings, marketing campaigns and so on. But what is more important, the ability to predict the future with slightly higher level of accuracy, or that the future is actually good? Would you rather predict with high degree of confidence that you’re going to get 30 tasks done within a week – and deliver exactly that, making your prediction 100% accurate, or would you rather predict with low degree of confidence that you will deliver 60 tasks (including the 30 from previous example, twice as much business value) and then end up delivering 75, making your prediction quite inaccurate in fact? Clearly the latter situation is preferable.


Kanban wins if you want to build software fast and be happy doing it. Scrum provides slightly better predictability at the cost of lost productivity and often times unnecessary stress.

Битва: видео

Я с копьём и щитом против меча и щита – в шлемах, в окружении факелов и под звуки барабана. Меня вызвали неожиданно, и поставили биться с незнакомым человеком – сижу, никого не трогаю, тут диджей (друг) объявляет. Биться пришлось с чемпионом Германии. Я победил – соперник поскользнулся в грязи, и я его радостно затоптал. (Чемпион Германии по танцам, но так ли важны детали?)

А это, пожалуй, самый агрессивный бой.Копьё против меча.

Posted by Symposium X. Качественный отдых, позитивное общение, знакомства. on Wednesday, June 28, 2017


На вечеринке “Взятие Трои 2017” посреди вечера был неожиданно вызван на поединок с неизвестным соперником – это шанс быть втоптанным в грязь, только в этот раз в грязь был втоптан мой противник. Очень весело 🙂

Документальный фильм “Акт убийства”

Документальный фильм “Акт убийства” это что-то из ряда вон. В Индонезии в 1965-м произошёл военный переворот, закончившийся периодом жёсткой зачистки коммунистов. Победители призвали на помощь бандитов, которые оформились в политическое движение. Фильм снят в 2012-м году, и ребята, которые в те далёкие годы убили тысячи людей – лично, собственными руками, – рассказывают о своём прошлом. В обществе произошло какое-то невообразимоё сквозное промывание мозгов, и эти люди живут без угрызений совести и без каких-либо упрёков со стороны, партия по-прежнему поёт гимны и пользуется уважением. Так вот, эти ребята, которые с готовностью и гордостью рассказывают о том, как они экономили время, научившись душить металлической проволокой – вот к этому столбу я её привязывал, вот сюда усаживал коммуниста, и вот так затягивал, получился кадр? – эти ребята согласились о своей истории снять правдивый документальный фильм. А пока они сами этот фильм снимали, Джошуа Оппенхаймер снимал их. Результатом и является “Акт убийства”. Снимал он их не только в процессе съёмки их документального фильма, но и в процессе просмотра и обсуждения отснятого материала. Рекурсия такая. Гениальный фильм, совершенно не помещающиеся в голове сцены, события, истории, люди… Тяжёлый. Уникальный. Производящий неизгладимое впечатление. Очень рекомендую.

Политика и открытый исходный код

Победа Дональда Трампа на президентских выборах США поразила. Ведёт он себя совершенно неприлично, на мой взгляд: передразнивает инвалида, кривляясь перед камерой, на предвыборных дебатах перебивает, кричит, оскорбляет, врёт – и когда в ответ ему предоставляют мгновенное фактическое опровержение, ссылаясь на видеозапись его собственного интервью, – настаивает на лжи. Я удивлён, что нарушая законы приличия можно так далеко продвинуться. Ведь есть какие-то границы, не мог ведь он посреди дебатов раздеться догола, стать в мостик и запеть гимн СССР? Ведь остановили бы его, прекратили видео-съёмку и всё такое? (Или было бы как в шикарном сериале Black Mirror, в первой серии, про свиней?) Т.е. граница приличия таки существует где-то – я ожидал, что она всё таки поближе к адеквату проходит, а оно вон как.

Отношение к фактам, к понятию “факт” вообще, у Трампа необычное, что было продемонстрировано в первой же официальной пресс-конференции новой администрации Белого дома. Трамп обвинил журналистов в том, что они все (включая как “демократические”, так и “республиканские” станции) неверно осветили его иннагурацию – я, говорит, точно видел, толпа огромная, миллион-полтора человек (я цитирую). А вы все врёте. В тот же день к журналистам вышел глава администрации, или какой-то такой представитель, и сообщил ошеломлённым журналистам, что президент убеждён, что эта иннагурация была самой популярной за всю историю, и точка! Я опять цитирую. После этого он сказал, что цифры по посещаемости получить всё равно невозможно, после чего мгновенно предложил какие-то свои цифры. Еще чуть позже, в интервью с журналистом другая официальная тётя сказала, что, мол, у вас есть факты, а у нас есть альтернативные факты. Это высказывание вызвало сильный резонанс – и на самой пресс-конференции, и во многих дискуссиях позже.

Журналисты шокированы – информация, исходящая от Белого дома, совершенно не заслуживает доверия, и зачастую является противоречивой, им не приходилось работать в такой ситуации никогда.

Что мне очень во всём этом не нравится, это отношение огромного количества людей к упомянутому понятию “факт” очень отличается от общепринятого. Для многих, как показывает победа Трампа на выборах, это не очень важно – ну, врёт мужик, подумаешь! Но ведь при этом с таким подходом невозможно сделать карьеру в науке, невозможно сделать карьеру в журналистике, невозможно даже продвинуться в политике – по крайней мере я так думал до последнего времени. Поразительно.

Не знаю, мне, лично, очень некомфортно знать, что у такого человека есть возможность сбросить ядерную бомбу.

С другой стороны, то, что Трамп говорит про Израиль, про терроризм, про преступность, мне нравится. Поживём – увидим.

Да, но я, вообще, это всё к чему. К тому, что политику переписывать надо более толково. Переписывать в том смысле, что ведь по существу нам нужно просто построить более устойчивую систему. На самом деле существующая в США система и так уже довольно устойчивая – президент далеко не король, он не может, например, своим указом вернуть рабство или заставить женщин ходить в парандже, что уже хорошо. Но можно лучше. Ведь что такое законы? Это правила всякие, считай, программа – а программы мы знаем как писать, большой толпой, с открытым кодом, разбивая на независимые модули, покрывая тестами и т.д. И как-то пора уже людям голосовать не один раз в 4 года, выбирая между малопривлекательной бабушкой и малопривлекательным дедушкой, а голосовать по конкретным вопросам, технологии-то позволяют.

А то вон выбрали недоразвитую знаменитость, предсказуемости ноль.

Плоская Земля

Многие люди верят, что Земля плоская. Это не шутка, это такая же реальность, как люди, благославляющие Дональда Трампа именами популярных богов. На изображении внизу написано “в сообщество плоской Земли входят люди со всего земного шара“.

Реальность не устаёт поражать.

Исус и Яхве за Дональда Трампа

Если вчерашнее видео, вдруг, показалось вам чрезмерно безумным и оторванным от реальности, вот буквально сегодняшнее видео, где религиозные избиратели благославляют Дональда Трампа – одного из фаворитов текущей избирательной гонки на роль президента США:

UNBELIEVABLE: This is the CRAZIEST thing I've seen in Religion since the pope was here last week!So-called Evangelicals praying blessings on Trump and pleading with God to make him president! They tell God he could bless America spiritually? What is it about this man that makes these false teachers think he, as a non-Christian could possibly bless America spiritually!?(This is not what Biblical Christianity looks like. This is fake self-serving Christianity).Apparently the people in the room don't think God can hear their prayers unless half the people in the room are videoing them on their phones and uploading to the *cloud* – which is apparently where they think God resides!Attending are the usual false teachers like David Jeremiah, Kenneth Copeland, Paula White, Robert Jeffress, Pastor Mark Burns and Rabbi Schneider.Some "faith leaders" are so desperate for a seat at the king's table, that they will prostitute themselves in this manner. Trump really has them bamboozled into thinking he's God's man for the job of POTUS.

Posted by Jonathan Cousar on Tuesday, September 29, 2015

В русском переводе нет, но там и так всё понятно, думаю. Слева рассказывают о воле Иисуса Христа, о том, что молятся, чтобы Дональд, победив, привёл к власти своей правой рукой афро-американца – это было бы угодно Исусу по мнению джентельмена слева. Мужчина справа в характерном головном уборе взывает к Яхве, иудейскому богу, и тут же добавляет что-то про Христа. Женщина, поглаживая кандидата в президенты в области живота, говорит что-то стандартно-католическое. Трамп серьёзен. Он верит в победу. Аминь, товарищи!

Экстаз и мистическое излечение

Видео с религиозной церемонии – насколько я понимаю, священнослужитель, прикасаясь к прихожанам, излечивает их от болезней и позволяет на личном опыте испытать мистическое единство с триединым богом:


Posted by Ankh Ma'at Ra on Friday, February 26, 2016

Вот один из комментариев под видео (под ним 220 лайков), в моём переводе на русский:

Я благодарю Бога, я была на одной из этих служб и это правда, Доктор дал моей дочери 5 лет жизни и человек Бога даже не подошёл к нам, он просто направил руку в нашу сторону – и мы отключились. И что вы думаете, тридцать три года прошло, и она по-прежнему жива. Бог добр и вы, люди, не должны высмеивать мужчин и женщин Господа. Он реален.

Если данное видео и комментарий вызывают скептицизм, то почему? Что именно здесь не так?

Критическое мышление

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

Оно, к счастью, проснулось. Критическое мышление это навык, его можно и нужно тренировать. Жить, опираясь на рациональные представления о мире, умея отличить обман от истины, намного приятней. Мы окружены дезинформацией – реклама, статьи в интернете, советы друзей… Как знать, существует ли снежный человек? Или лох-несское чудовище? Или привидения? Правду ли показывают в передаче “Битва экстрасенсов”? Произошёл ли человек от одноклеточных бактерий посредством эволюции? Стоит ли сторониться генно-модифицированных продуктов питания? Существуют ли гравитационные волны на самом деле? Приносит ли пользу гомеопатия? Аккупунктура? Антибиотики? Хиропракторы? Правда ли, что нашу планету посещали пришельцы из космоса, и построили пирамиды в разных частях света? Изменение климата – миф или заговор? Стоит ли платить больше за “органические” овощи? Имеет ли смысл полагаться на астрологические прогнозы?

Вот, для затравки, замечательное видео от героев рационального мышления в переводе на русский:

Участники диалога, слева направо:

  1. Кристофер Хитченс – автор многих бестселлеров, и известный оратор, критик догматических идей, в особенности христианских и мусульманских, в частности организованной педофилии католической церкви. Я его книг не читал, но видел некоторое количество дебатов – очень прикольный чел, ныне, к сожалению, покойный.
  2. Дэниел Деннет – профессор философии, исследователь в области философии сознания, популярный оратор и автор. Его книги я тоже не читал пока, но слушал лекции – именно Деннет помог мне понять, как сознание может возникнуть из детерменированного материального мира химических и электрических взаимодействий, но при этом обладать субъективными свойствами, включая ощущения “я” и свободы воли.
  3. Ричард Докинз – наверное, самый известный автор, продвигающий идеи научного атеизма, эволюции, критического мышления. Автор знаминитых бестселлеров “Эгоистичный ген” и “Бог как иллюзия”. “Эгоистичный ген” я не читал, но планирую прослушать в аудио-варианте, эта книга была издана в 1976 году, – в год моего рождения, – и помогла конвертировать огромное количество креационистов, то есть убедить сомневающихся в истинности научной теории эволюции, которые верили в идею создания мира разумным творцом. “Бог как иллюзия” я прослушал пару лет назад. Эта замечательная книга предлагает очень подробную критику религиозных идей, и продвигает рациональное, критическое мышление, научный подход к познанию мира, а также интересные теории, объясняющие возникновение и распространение религиозных идей. Докинз также знаменит как оратор, выступающий в лекциях и дебатах по всему свету.
  4. Сэм Харрис – философ и нейробиолог по образованию, автор книг, известный оратор и публицист. Харрис – мой любимый мыслитель современности, я просто обожаю его слушать, так внятно и красиво никто не говорит, он умеет разложить по полочкам, показать логические несостыковки лучше всех, причем делает это с очень своеобразным чувством юмора. Его биография включает в себя десятки лет изучения медитации в Азии, с периодами отшельничества и интенсивной непрерывной медитации до трёх месяцев за раз. При этом он настоящий учёный, доктор наук по нейробиологии, занимающийся изучением мозга много лет. Он также прекрасно разбирается в вопросах искусственного интеллекта. Его книги я хочу прочитать все, пока что только прослушал “Моральный ландшафт”, и прочитал “Пробуждение”. “Моральный ландшафт” объясняет, как мораль эволюционировала, что это такое, и почему для морали религия не просто не необходима, но вредна. “Пробуждение” это просто бальзам на душу – эта книга о духовных переживаниях, о мистических опытах, о состояниях сознания, про которые принято говорить только в контексте религий, либо в контексте псевонаучных и антинаучных идей Нью Эйдж, либо в контексте суеверий шаманских практик. Харрис говорит о состояних выхода за пределы эго, об ощущении мистического единства со всей Вселенной, об экстатическом блаженстве, о безусловной любви и подобных переживаниях, которые испытывали миллионы людей, и описывает механизмы нейробиологии, а также конкретные медитативные практики, позволяющие достичь этих состояний. Описывает языком рационального мыслителя, учёного, который знает о чём говорит из личного опыта.