Constantine Molchanov

20th Century Boy

Read this first

Adding trees to random terrains in Enu 0.2

Read the first part →

In this tutorial, I’ll add some trees to the random terrain that we’ve created last time. For the impatient, here is the complete code: https://gist.github.com/moigagoo/d40a76beee5a62d2fec7679ebc033730

As before, let’s first write down the basic ideas:

  • trees grow on hills
  • a tree consists of a trunk and a crow
  • to draw the crown, I’ll use layers from the previous part

Tree

Here’s the command that draws a tree:

- tree(height = 5, width = 3):  
  let
 trees use their own colors so we need to preserve the original one
    defaultColor = color

 a tree is roughly half trunk and half crown
    trunkHeight = height div 2
    crownHeight = height - trunkHeight

 we'll build from the top down, so first we got up
  up height - 1

  height.times(stepNum):

   if we're still within the crown height, draw green layers
    if stepNum < crownHeight:
      color = green
...

Continue reading →


Generating random terrains in Enu 0.2

Enu is an interactive programming sandbox that helps learn programming through game creation. The author made it with children convenience in mind so it’s great for teaching kids programming.

Just days ago, a long-awaited Enu 0.2 was released. It boasts multiple improvements compared to the previous version but the biggest for me is the documentation. Finally, the great tool Enu is has the docs it deserves, beautiful and comprehensive.

To celebrate the new release, I decided to try and build a game with Enu and publish a tutorial on the process.

The Game

The game I’m having in mind is a capture the flag kinda game. I’m seeing a bumpy terrain covered with trees, with monsters walking around, and a randomly placed flag. The player needs to capture the flag and not get caught my the monsters. I’d like to implement the game mechanics where the monster can see or otherwise sense the...

Continue reading →


Loco: Localization Package for Nim

There’re few i18n packages for Nim, all look unmaintained and undocumented. So I decided to make my own. Please welcome Loco.

Problem

The goal is to have the usual i18n localization routine, where you declare language variables separately from the business logic, optionally with multiple variants for different quantities, and use them instead of plain text in your code.

How it’s done in other languages

In other languages, language variables are usually invoked with a function call that accepts the name of the variable and the quantity to pluralize it with. In Python, for example, you’d write: i18n.t('mail_number', count=12).

Although this is classical approach most developers are used to, there’s one problem I see with it. Language variable names are just strings and strings are not validated. I you mistype a variable name, you either get a runtime error about a missing translation...

Continue reading →


Exploring Karax

I’ve been programming in Python for some ten years, but for the last couple of years Nim has become my new love.

In this short post I’m discovering Nim as a frontend language by exploring Karax framework. Note that I’m not a frontend developer and am pretty scared of the concepts those guys deal with. This is a journey for me as much as it is for you.

Installing Karax

First, install Karax with nimble install karax@head. This command installs the latest Karax dev version library and a few useful commands including karun, which we’ll use later.

Of course, you should have Nim and Nimble installed before installing Karax. Choosenim is the right way to install them.

Creating Project

Create a new directory and switch to it:

$ mkdir karaxapp
$ cd karaxapp

Create src directory with karaxapp.nim file:

$ mkdir src
$ touch src/karaxapp.nim

Normally, when developing with Nim, you’d start...

Continue reading →


How to Hire Your First Tech Writer

I’ve been a tech writer for several years before switching to a management job. Having been both tech writer and manager, I’ve built a strong vision of what a good tech writer should be able to do. I’m writing this vision down in the hope that it will help companies who don’t have a dedicated tech writer in their team but plan to hire one make the right choice.

So, what does a tech writer do? Manager manages, programmer programs, so writer must write, right? Well, not exactly. Of course, strong copywriting skill is a must, but technical writing covers a much larger area than just creating copy. My experience tells me that if you’re hiring a writer solely to write, you’d rather teach your developers to write instead.

First, you can’t write any decent docs without interviewing developers and managers. You must have strong social skills to get the information you need without making...

Continue reading →


7 улучшений для Ульяновска

Я живу в Ульяновске, в общем-то, всю жизнь, почти 28 лет, и пока не планирую отсюда уезжать. Поэтому меня остро волнует судьба города. Хочу, чтобы он был комфортным для меня, моей семьи и горожан.

На 2016 год надо признать, что Ульяновск — некомфортный город. Совершенно не удивительно, что люди уезжают отсюда в Москву, Санкт-Петербург и Казань — там на самом деле в 100 раз лучше.

Тем не менее, не все потеряно для Ульяновска. Далее — мои мысли о том, чего конкретно не хватает городу, чтобы стать комфортным.

Дисклеймер: я не специалист по благоустройству городов и не депутат. Я просто вижу хорошие вещи в других городах и странах и хочу иметь их дома.

Запретить маршрутки

Маршрутка — унизительный, опасный и неэффективный транспорт. Водители маршруток известны отвратительной ездой, сами маршрутки — шансоном, духотой и выхлопным пердежом. Кроме того, маршруточный бизнес идеально подходит...

Continue reading →


4 улучшения для Ростелекома

С мая 2016 года я пользуюсь интернетом и цифровым телевидением Ростелекома. Так сложилось, что наши отношения сразу не задались: менеджер дал мне некорректную информацию об условиях подключения, техник ошибся в договоре, тариф оказался негодным и много еще чего. Только за телефонными разговорами и перепиской в Твиттере с техподдержкой я провел часа 3 чистого времени.

С моей перспективы в действиях Ростелекома плохо буквально все — и сами услуги, и поддержка, и даже процедура расторжения отношений. Я — крайне нелояльный клиент.

Но от нытья толку мало, поэтому я решил написать конкретные улучшения, которые Ростелеком может внедрить, чтобы у него было меньше таких грустных историй, как моя.

Перестать впаривать приставки

Как сейчас

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

Continue reading →


A Sad Story of a Stolen Skype Account, or The Worst Support Ever

This story is a warning to all Skype users. Don’t repeat my mistakes. Change your password before it’s too late. Or just stop using Skype.

TL; DR: If a scammer knows your Skype password, there’s absolutely no way to get your account back. Microsoft doesn’t care about Skype, and Skype doesn’t care about you.

skeleton-2.jpg

Friday

It’s evening, almost everyone in the office has already left. I’ve just finished my work and I am ready to go jogging. Hmmm, weird, Skype just logged out itself. Trying to log in—fail. I start to suspect the worst but refuse to believe. I log in with my Microsoft account and see that “I” have been asking my contacts to lend me ₽15,000 (≈$256). “I” am not a bot. “I” speak human and respond naturally:

hack-blurred.png

It’s in Russian, because I am Russian. What’s happening here is basically “me” saying Hi and asking for a favor: lend me a couple hundred bucks until tomorrow. BTW, “₽”...

Continue reading →


«По определению» и «на порядок»

«По определению» и «на порядок» — штампы. Уже по этой причине их стоит использовать осторожно. Но эти двое хуже, чем просто штампы. Их по определению используют не к месту на порядок чаще, чем остальные штампы.

Публичные точки доступа по определению не дают высокой скорости.

Определение публичной точки никак не указывает на скорость ее работы. Публичная значит для всех. И всё.

Новая версия на порядок лучше.

На порядок значит в 10 раз. Если не имеете ввиду «в 10 раз», не пишите «на порядок».

View →


Правда ≠ не ложь

Перед списком ленивый писатель пишет:

Чтобы включить гипердрайв, сделайте следующее:

  • перейдите в панель управления,
  • переведите тумблер «Гипердрайв» в положение «Вкл.»,
  • поверните пусковой ключ по часовой стрелке на 90°.

Не ленитесь! Пишите конкретно, что́ следует дальше. «Три шага», «новые модели», «наши клиенты» — всё лучше, чем «следующее».

«Следующее» ничего не значит, но как будто подходит ко всему. Это аморф, как «объект» или «человек».

Программисты любят слово «объект». Если программа сохраняет файлы и папки, программист скажет «программа сохраняет объекты». Это коротко и корректно, ведь и файл, и папка — это объекты.

Писать «следующее» тоже коротко и корректно. Фишка в том, что писать надо не корректно, а информативно.

Корректное не противоречит фактам.

Информативное предъявляет факт.

Хороший писатель не просто не лжёт. Он предъявляет правду.

P.S. Писать по-английски...

Continue reading →