• Clojure Webinar #1

    In this video, I’m speaking on Emacs advantages when using Clojure.

    Links from the video:

  • Why not Python

    Recently, I was sorting out with my drafts for blog when I found an interesting one. It was about what programming language to use for education at schools and universities. Python for sure! the draft says. Easy syntax, cross-platform, wide community and bla-bla-bla.

    I’m happy I haven’t published that post so far because nowadays that way of thinking makes me ashamed. Considering any specific language as the primary key of successful education means to make a mistake. Even Python with all its benefits.

    You could ask me: no Python, great, so what else could you suggest? Let me keep an answer for a couple of paragraphs. Instead, could you think just a minute on what’s the reason of IT education in general? I mean, we attend to IT department for… what?

    To learn a modern language? Maybe. But once you finish the university, you’ll realize there are lots of new languages and frameworks. Your possible employers don’t need PHP + jQuery anymore, they want Ruby + React. Or substitute those tools with Java and Scala, it doesn’t matter. In a long term, you cannot reach a train that moves faster day after day. Since technologies became simpler (Python, Ruby, Node.js), there are more and more people claim on the same workplace.

    One of your trump card might be a good knowledge of algorithms. I mean, you must understand how the things work rather then copying and pasting them from the Internet. The most serious problem that happens to new ones is they just don’t know how to split a huge thing into primitives. How to build abstractions. How to write a function rather than using a class with global state.

    I saw an online interview one time. A junior Ruby guy was asked to write a function that reverses a string. I cannot do that, the answer was. OK, you have an hour, he was told. Deal with it. There were long 50 minutes of misery but he didn’t make it anyway.

    Closer to the end, they asked to stop writing code, but to describe the algorithm in words at least. No success.

    That guy knew Ruby, though. And Javascript. And Node.js, Webpack, Bower and so on. I may even think he worked on his project as well. But I would never hire him or let him join a team which I belong to. Because when you cannot express a primitive operation in words, it reveals dangerous holes in your mind. And that could cause unpredictable troubles.

    As far as I see the purpose of education, it’s not to learn Python or any other language. It’s about a) how to compose abstractions using primitives and b) how to simplify abstractions, express them via primitives. Two-ways process, I guess. Up and down. Once you can rich any level at will, you are a great programmer.

    Talking about Python, I consider it as a great tool to express your ideas. When you definitely know how the things should work, but don’t have much time. It is one of the reasons why it’s so popular in scientific area. Engineers and scientists are usually busy with research, but not learning patterns and SOLID. Python is a great choice for them. To build a chart, to train a neural network.

    But that easiness could even kill willness to learn. For a newbie, neither a good syntax and rich standard library could help to become a good programmer. Maybe to write a web app, to find the first job, but not to teach you how to solve problems other than putting a JSON into DB.

    I would never face other stuff, you may say. OK, that’s up to you. But there won’t be growth in your career. Because developing web apps becomes easier nowadays regardless Ruby, Node.js and crowds of students. How would you survive?

    So after all, what language could make you high in algorithmic thinking? Suddenly, it’s Lisp =) or Scheme if talking more precisely. Scheme is the best tool to learn programming, I think. Not C, Python, or Javascript.

    Scheme forces you to make everything from scratch by your own. At the end of SICP, that’s not a problem to write your own registry machine with compiler using pure lists and cons pairs. When you deal with some programming language or tool, you really understand how the things work under the hood without checking a source code. Only Lisp could bring that fillings.

    Yes I know that in MIT, they stopped teaching SICP in respect of Java. It’s their decision after all. Maybe, after 20 years they’ve become really tired of it. And nobody couldn’t develop a new curriculum. But I know what did Dijkstra say about that and I cannot agree more with his opinion.

    Long story short: try Lisp. It’s not a silver bullet. Perhaps you would never work with it in the future. There a quite a few jobs, I know. But even bits of its knowledge will make you a better programmer than now you are.

  • What to read #19

  • ООнанизм

    Познакомьтесь с объектно-ориентированным онанизмом:

    chai.should();
    
    foo.should.be.a('string');
    foo.should.equal('bar');
    foo.should.have.lengthOf(3);
    tea.should.have.property('flavors').with.lengthOf(3);
    

    Круто же? Просто.пишешь.слова.через.точку.и.все.понятно(). Недолго новый язык придумать:

    Пусть.Сумма.Равно.Единичка().Прибавить.Двойка();
    Сохранить.В.Базу.Пользователь().Созданный.Из.JSON.Строки.Введенной.Из.Консоли().
    

    Обычного ассерта недостаточно. В библиотеке есть Should, Expect и Assert. Почему нет Мамой.Клянусь, Бля.Буду или Стопудов? Чтобы уж точно быть уверенным, что тест работает.

    Конечно, этот бред зародился Джаваскрипте. Где же еще до такого додумаются? Но заразу начинают тащить в Руби и Питон. Языки группы риска.

    Что возвращает метод should? А что be, a? А если напишу .be.be.be.a.a.a("wtf")?

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

    У нас в проекте на Кложе 80 тестов и 800 ассертов, все работают на одном макросе is. А этим долбоебам нужен квази-язык чтобы.писать.в.объектном.стиле.потому.что.круто().

    Шизофрения, как и было сказано.

  • What to read #18

    Nice links to read:

  • The Wall (Music From The Film)

    What a rare album I’ve found! It’s the legendary “The Wall”, but captured directly from the movie with all the noises, phrases and ambients. Most of the songs are played within a symphony orchestra. There are also two tracks appeared only in the movie: “When The Tigers Broke Free” and “Empty Spaces”.

    Listen also to “Mother”, “The Trial” and “Comfortably Numb”. They sound quite different to the studio records.

    Oh god, that album made my week, not a day.

  • Будущее

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

    Вот Илья Бирман в заметке от 2014 года пишет, что в будущем не будет приватности. Совсем. И что сопротивляться этому глупо.

    Я эту заметку прочитал, и у меня один вопрос: где доказательства? Где ссылки, тренды, графики, суммарная стистика за последние 20 лет? В заметке всего лишь частное мнение, не подтвержденное ни чем. Просто Илье показалось, что прайваси не будет, а если ты думаешь иначе, то ты stupid.

    Не поленитесь, пройдитесь по каждому абзацу. Нет. Ни одного. Доказательства.

    Может, Илья пересмотрел на ночь Матрицу или произошел описанный им же случай – что-то брил в душе, а друг снял видео и выложил в интернет?

    В каждом параграфе Илья убеждает, что прайваси обязательно исчезнет. На все лады перебирает примеры: будет то, се, но доказательств не приводит. Илья, откуда все это будет?

    Особо доставил пример с Google Glass. Прошло 3 года, очки не взлетели. Я помню, как в те дни выли журналисты, что каждый будет ходить в туалет с очками, снимать и выкладывать с сеть.

    За все время я ни разу не слышал хотя бы отдаленно о скандалах или судебных разбирательствах, связанных с очками. Аргумент вообще мимо кассы. А все почему? Начитались интернетов и решили, что будущее предрешено.

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

    По работе я пользусь непопулярными среди программистов технологиями: Емакс, Кложа, Лисп. Вы бы знали, сколько я слышал об их скорой смерти. Если б за каждый раз капало на счет 5 рублей, был бы уже олигархом. Но все никак не помрут, а сумма в инвойсах растет, да что ты будешь делать.

    Коллега недавно убеждал, что в будущем люди станут святыми. Следите за нитью: насытившись потреблением, человек потеряет нравственный ориентир, а потому отринет материальные ценности и примет бога. Оставим логику за кадром. Интересно другое: мысль была высказана так же безапелляционно и бездоказательно, как пишет Илья.

    А у меня теория о порабощении нас рептилоидами. В чем разница между идеей Бирмана и моей? Да ни в чем. Достаточно веры в свою правоту.

    А теперь представьте, что таких предсказателей полно по всему миру и каждый что-то пишет в интернет. И ты всегда будешь stupid, если не согласен.

    Илья и другие: то, чем вы занимаетесь, называется экстраполяция. Продолжение кривой по видимому участку. Вы увидели какой-то тренд и спешите составить по нему прогноз. Очень опрометчиво. Специально для вас нарисовали картинку:

    xkcd

    Если сегодня у подруги 0 мужей, а завтра 1, то через месяц будет 30. Логично.

    Вы, Илья, кажется, знакомы с математикой. Не знаю, проходили ли вы полиномы Лагранжа. Это такие кривые, которые строят по опорным точкам. С ними забавная вещь – они ОЧЕНЬ плохо экстраполируются. График стреляет в потолок уже при приращении на единицу. То, что вам кажется прямой, может быть дугой полинома.

    История учит, что большинство процессов имеют скорее волнообразную форму, а события носят характер маятника.

    После Первой и Второй Мировых Войн нас убеждали, что люди уже не будут воевать. Воевали, и не раз.

    Коммунисты обещали светлое будущее. Убили массу людей и угробили страну.

    Недавно мне попалось видео пятилетней давности, где Владимир Соловьев сказал, что вооруженный конфликт России и Украины – это немыслимо и в принципе невозможно.

    Верующие две тысячи лет рассказывают, что завтра Иисус всех спасет.

    Популизм политиков даже не стоит приводить в пример. Политика и лживые прогнозы идут рука об руку.

    Меня бесит эта ложь. Теперь по поводу вашей заметки.

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

    Приватность – это не только про голые фото и секс. В сети навалом любительского секса. К приватности относится, например, проблемы со здоровьем, неудачные отношения, любовная переписка, исследования, подпольные проекты.

    Поисковик Duck Duck Go обрабатывает 20 млн запросов в день просто потому, что предлагает пользователям анонимность. Понимаете, человеку неудобно, когда он гуглил “простатит”, а завтра на любимимом сайте видит рекламу “проблемы с потенцией”. Особенно, когда коллеги смотрят в монитор и все понимают.

    Мое приложение Queryfeed, которое я написал в шутку, держит 6 млн запросов в день. Оно тащит данные из Твиттера, клиенты анонимны.

    Появился Биткоин – огромная распределенная система, где каждый плательщик и продавец могут оставаться анонимными при полной прозрачности сделки. Валюта биткоина за несколько лет взлетела до 1000 долларов. Откуда такой интерес? Анонимность.

    Вы слышали про Тор и глубокий интернет? Это бездна, которая живет по своим правилам и законам. Принципы публичной сети там не действуют. Каждый день на глубоких сайтах совершаются сделки на колоссальные суммы. Почему? Анонимность.

    Представьте, если гинеколог выложит на Ютуб видео с пациенткой. Письмо любимой девушке опубликуют на пятничном ресурсе. Исходный код любой программы моментально утекает Гуглу и ФСБ. Заказчик читает вашу переписку с конкурентом.

    Если загуглите по словам “bullying suicide”, то откроется печальная статистика. Среди жертв травли полно тех, кого довели до самоубийства через интернет. К сожалению, им не сказали, что будущее еще не наступило и не стоит выкладывать сомнительные тексты и фото.

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

    Это происходит уже сейчас. В моем браузере 2 расширения для блокировки рекламы и виджетов. Все больше открытого ПО. Разработка Тора и криптовалют идет по всем фронтам. Торренты давили-давили, а они все живут.

    В каждом значимом храме РПЦ ставит глушилку телефонов. Зашел в храм – не можешь звонить. Уже сегодня в частном порядке можно купить глушилку Вай-фай или GPS-сигнала. Ими пользуются угоньщики автомобилей. Это значит, что если от слежки станет не скрыться, изобретут устройство для противодействия этому, которое каждый будет носить с собой как сотовый телефон.

    И последнее. Есть умный мужик Алан Кей, создатель парадигмы ООП (объектно-ориентированное программирование). Сегодня нет промышленного языка, который бы не поддерживал эту парадигму. Этому же человеку принадлежат слова:

    Лучший способ предсказать будущее – изобрести его.

    Приступив к работе над теорией ООП, Алан не стал заявлять на весь мир, что скоро изменит будущее. А ведь именно это он и сделал: вся ИТ-индустрия сегодня работает на его трудах. Он лишь сказал, что нелохо бы представить программу как набор объектов-клеток, которые шлют друг другу сообщения (Алан биолог по образованию), а потом долго работал. Но не писал в блоге, что ООП изменит мир. Почитайте его труды: в силу авторитета Алан может позволить себе самые дерзские прогнозы, но делает лишь предположения.

    Забавно, да? Человек, который уже изменил мир, не делал предсказаний. Тот, кто не изменил, делает. Это называется Эффект Даннинга — Крюгера.

    Короче, я за то, чтобы горе-предсказатели несли ответственность за свои слова. Особенно, если сильны в чем-то, например, дизайне, и поэтому пользуются популяростью в интернете.

    Читателю советую иметь больше критицизма, требовать факты и не верить случайным мнениям.

  • What to read #17

    I’ve got very interesting links today (most of them relate to Clojure and FP):

    • Fourteen Months with Clojure

      Building a server application with Clojure is a better experience than with many compiled languages, because as with any Lisp, you can just hotpatch everything in the REPL as you build it.

    • Changes I would make to Go

      In its current form, I prefer not to use Go. It is not that Go is bad - it is just that there are lots of languages available that I find more enjoyable. When I work with Go I cannot help thinking about how I could be doing things differently in another language.

    • Comparing Reagent To React.Js And Vue.Js For Dynamic Tabular Data

      ClojureScript version has a lot less syntactic noise, and I find this has direct impact on my ability to reason about the code. The more quirks there are, the more likely I am to misread the intent.

    • Why Functional Programming Matters

      23-pages academical paper that I’m going to read someday.

  • Шестнадцатая встреча

    Провел очередную встречу:

    • Kubernetes: деплой по-царски. Роман Гребенников

      Слайды

    • Основы машинного обучения. Дмитрий Соболев

      Слайды

    Следующая встреча в конце апреля. Хотите выступить – пишите в личку, чат Телеграма или создайте ишью в нашем Гитхабе.

  • Благотворительность

    Тема урока – благотворительность. Из разговора Мэтью, учителем английского:

    – М: Предположим, ты перевел Википедии 10 долларов. На что потратят эти деньги?

    – Я: Ну, хостинг, разработка движка, то, се…

    – М: Вовсе нет. Википедия не заинтересована в твоей десятке. Для них это ничто, пыль. Разговоры в духе “если бы каждый дал по доллару” – популизм.

    – Я: И на что же тогда?

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

    – Я: Как это?

    – М: Есть люди, которые… ну, немного социопаты, но при этом очень богаты. Сотрудники Википедии пытаются донести до них мысль, что пожертвование возвысит их в глазах общества, сделает чище и добрее, даст смысл жизни и все такое. Даже отпустит грехи, как бы дико не звучало. На это уходит масса сил: нужно изучить психологический портрет богача, правильно составить текст, нажать на больные точки… И это работает. На раскрутку может понадобиться год, но бабла придет до отвала. А весь этот год нужно платить оператору, чтобы он не ушел. Так что твои 5, 10 или даже 100 долларов спустят на почтовые рассылки и телефонные звонки. И так везде, не только в Википедии.


    Учитывая, что Мэтт занимался благотворительностью со студенческих лет, ни минуты не сомневаюсь в его правоте. А уж как меня задрали спамом сотрудники Википедии после того, как я перевел им 100 рублей!

    Благотворительность – такой же бизнес, только немного с другим подходом.

Страница 50 из 79