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

      Здравствуйте, меня зовут Сергей, и у меня, как и у многих других программистов, нет диплома о высшем образовании. Не то, чтобы я не пытался его получить - пытался, даже дважды. Но как оказалось, в Пензе - небольшом провинциальном российском городке, где я вырос, получить диплом о высшем образовании в области ИТ конечно же можно, но вот само это образование получить никак не удастся. Этот пост - история моих неудачных попыток и описание встретившихся на моем пути проблем.

      Творец из "7В"

      Начал программировать я еще в школе. На уроках информатики в седьмом классе я познакомился с Turbo Pascal. Программирование практически сразу же стало моей страстью, меня очаровывала приобретенная мною власть над компьютером. Я чувствовал себя почти что Богом - я мог собственноручно создавать из ничего целые системы, работающие согласно моему, как мне тогда казалось, исключительно гениальному замыслу. И первым делом я сделал то, что сделал бы на моем месте любой другой семиклассник - я взялся за создание собственной RPG-игры "World of Plus", которая должна была стать убийцей популярного тогда World of Warcraft.

      Игра называлась так в честь главного героя - отважного плюсика, путешествовавшего по замку, стены которого, как и любые иные препятствия в игре, состояли из ноликов. Я еще не знал о том, как работать с графикой, поэтому игра была сделана в ASCII-стиле. В одной из комнат замка плюсик мог встретить персонажа, выглядящего как знак вопроса. У него плюсик мог взять единственный в игре квест - сходить в другую локацию, найти пропавший меч и вернуть его законному обладателю.

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

      Читать далее
    • Как Пифагор, Платон и Будда предвосхитили самую смелую гипотезу современной науки

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

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

        Как появился Пегас?

        Величайшим из древнегреческих философов по праву считается ученик Сократа афинянин Платон. Именно благодаря его "Диалогам" до нас дошла большая часть сведений о греческой философской мысли.

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

        Основной идеей философии Платона была, извините за каламбур, сама "идея". Именно он ввел в оборот это слово, которое на древнегреческом звучало как "эйдос". Для объяснения своей теории Платон обычно использовал аллегорию, позже ставшую известной как миф о пещере. Я вкратце приведу здесь только самую ее суть.

        Представьте себе абсолютно пустую белую комнату. В этой комнате нет дверей, на одной из стен почти под потолком располагается единственное окно. Под этим окном стоит кресло, к которому железными цепями крепко-накрепко привязан человек. Его голова и тело зафиксированы таким образом, что единственное, что он видит - противоположную от окна стену. Этот человек в раннем детстве был похищен учеными, подключен к системам жизнеобеспечения и привязан цепями к своему креслу, он вырос в этой комнате и никогда не видел мира за ее пределами. Время от времени ученые проносят за окном какие-то предметы: статуи, изображения животных, растений, зданий. Узник не видит самих предметов, а видит лишь только тени, отбрасываемые ими на противоположную от окна стену комнаты. Он различает в этих тенях схожие паттерны и дает им названия. Узник искренне считает, что те тени на стене, что он видит и которым дает имена - реальны.

        Читать далее
      • Как египетский фараон Аменхотеп основал христианство, и почему оно стало идеальным мемом

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

          Я вырос в абсолютно нерелигиозной семье. Среди моих знакомых и друзей тоже почти не было религиозных людей. Поэтому с самого детства меня мучал один вопрос: почему существуют религии? Заметьте, вопрос состоял не в том, почему люди верят в Бога, хотя это тоже было мне не совсем понятно, а именно почему существуют религии с их нелепыми ритуалами и ограничениями. Раньше я считал их дремучими пережитками прошлых времен, простой картиной мира для глупых людей и удобным способом для властей управлять людьми. Но потом узнавая все больше и больше, я начал сомневаться. Факт, который в дребезги разбивал любые мои аргументы о том, что религия - это плохо: у всех когда-либо существовавших цивилизаций и обществ на нашей планете была своя религия. Это значило, что без религии цивилизация не может существовать. Но я все еще не мог понять почему. И вдруг совсем недавно я нашел простой и логичный ответ на этот вопрос в совершенно неожиданном месте.

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

          Читать далее
        • Как древние шумеры повлияли на значение скорости света, и почему Великая Французская Революция не смогла им помешать

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

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

            Чтобы понять это, давайте представим себе, инопланетянина, изучающего людскую цивилизацию. Он узнает, что для измерения времени мы используем единицы, равные времени полного обращения нашей планеты вокруг собственной оси, деленное на некоторое число. Если мы поделим время полного обращения Земли на двадцать четыре, то получим час. Если час мы поделим на шестьдесят, то получим минуту. А если и минуту мы поделим на шестьдесят, то получим секунду. И при этом именно секунда выбрана в качестве основной единицы в международной системе стандартных единиц. Что за бессмыслица? - подумает инопланетянин.

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

            Читать далее
          • Как я победил прокрастинацию, узнал свои истинные желания, поставил четкие цели и достиг их

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

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

              Это дало мне сильнейший толчок и изменило мою жизнь до неузнаваемости. За прошедшие пять лет я попутешествовал по куче стран, полтора года прожил в солнечной Черногории, переехал в Израиль, несколько раз менял работу на компании с гораздо лучшими условиями, в последний раз устроившись на работу, на которой мой доход в более чем 15 раз превышает мой доход пять лет назад, и на которой я делаю продукты для всемирно известных корпораций и организаций, создал три более-менее успешных open-source проекта на Github и написал множество статей на Хабрахабр, некоторые из которых имели ошеломительный успех у читателей.

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

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

              Читать далее
            • Как я устал от JavaScript и создал свой собственный язык программирования

                За свою карьеру я успел поработать со множеством языков программирования. Писал flash-игры на ActionScript 3 и Android-игры на Java, сервера на Java, Scala и NodeJS (JavaScript), скрипты на Python, веб и мобильные приложения на React (JavaScript). И на каком бы языке я не писал, меня не покидало ощущение, что синтаксис этого языка слишком многословен, полон излишеств, шума и синтаксического бойлерплейта, мешающего пониманию написанного кода.

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

                Читать далее
              • Буддизм с точки зрения программиста

                  Здравствуйте, меня зовут Сергей, я работаю JavaScript-программистом, и я - буддист. Но совсем не такой, каким вы меня только что представили. Наверняка, при прочтении слова "буддист", в вашей голове всплывает либо образ улыбчивого азиата в оранжевом одеянии, либо образ безработного хиппи-вегана, путешествующего по Индии, занимающегося йогой и ищущего "просветления" в сомнительных религиозных практиках. Так вот, я ни тот, и ни другой. Так кто же я? Чтобы ответить на этот вопрос, нужно для начала поближе познакомиться с историей буддизма.

                  Около трех с половиной тысяч лет назад Древняя Индия была завоевана ариями - одним из индоевропейских племен, пришедшем в Индию с предгорий Кавказа через территорию современного Ирана. Немного отклонившись от основной темы поста, скажу, что с этим завоеванием связано много интересных фактов. Именно потому, что кроме Индии эти племена завоевали также территории Европы и Ирана, все европейские, персидский и индийские языки родственны друг другу и входят в одну языковую семью. Вы же понимаете санскритское слово "веды" без перевода, верно? И именно по названию места происхождения этих племен в английском языке европеоидная раса называется caucasian race. А также именно по названию этого племени французский граф Жозев Артюр де Гобино дал имя своей печально известной расовой теории, позже популяризованной и претворенной в жизнь Адольфом Гитлером. Но давайте вернемся назад к нашей теме.

                  Читать далее
                • Стивен Вольфрам: кажется, мы близки к пониманию фундаментальной теории физики, и она прекрасна

                  • Translation
                  В продолжение моего поста про вычислимую Вселенную я хочу представить вам свой перевод статьи Стивена Вольфрама, созданной в рамках его проекта The Wolfram Physics Project.


                  Неожиданное открытие


                  За прошедшие несколько веков произошел настоящий прорыв в наших знаниях о принципах работы окружающего нас мира. Но несмотря на это, у нас все еще нет фундаментальной теории физики, и мы все так же не имеем ответа на вопрос о том, как именно работает наша Вселенная. Я занимаюсь этой темой уже порядка 50-и лет, но только в последние несколько месяцев все кусочки пазла наконец-то начали складываться вместе. И получающаяся картина оказалась гораздо прекрасней, чем все, что я только мог себе представить.
                  Читать дальше →
                • Почему мы живем не в Матрице, а в матрице?

                    Бог — это вечная и бесконечная истина, не имеющая ценности и смысла.

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



                    В поисках «теории всего»


                    Начиная с середины 20-ого века самой сложной и перспективной задачей теоретической физики является поиск так называемой «теории всего», которая объединит в себе общую теорию относительности и квантовую механику, тем самым дав точное объяснение всем наблюдаемым физическим явлениям. На роль такой теории претендуют многочисленные теории струн, теория квантовой петлевой гравитации и многие другие. Но мы будем говорить не о них. Мы сделаем шаг еще дальше.
                    Читать дальше →
                  • Как стать долларовым миллионером за 30 лет, лежа на диване



                      На Хабре недавно вышел пост ״Новичкам фондового рынка: честные разговоры о трейдинге״. Этот пост, опубликованный в одном из самых читаемых блогов Хабра, вводит людей в заблуждение и создает у них ложное представление о том, что игра на бирже — хороший способ заработка. Это вынудило меня написать комментарий, постепенно переросший в целую статью, с детальным разбором того, почему трейдинг — это не способ разбогатеть, а способ потерять деньги, и о том, как на самом деле заработать на инвестициях.
                      Поехали!
                    • Как я сделал навигацию в React Native не такой ужасной

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

                        Используя react-navigation или react-native-router-flux если вам нужно сделать экран, на который можно попасть из нескольких разных мест, вам будет очень трудно составить иерархию вложенных роутов так, чтобы все работало как надо. Или если вам нужно, чтобы какой-нибудь экран появлялся с недефолтной анимацией, то тоже придется попыхтеть. Также этих библиотеках воплощена вредная и деструктивная идея включения туда UI-компонентов вроде верхней полоски навигации и табов. Это прямое нарушение unix-way подхода, когда одна библиотека выполняет одну и только одну функцию, но качественно. Из-за такой тесной связи UI-компонентов с навигацией очень часто возникают баги — на экране появляется несколько полосок навигации, на одной из которых может быть кнопка «назад», а на другой название экрана.

                        Вдоволь нахлебавшись горя с стандартными библиотеками, я решил разработать свой навигатор. Основными целями при разработке были простота API, отсутствие жесткой структуры вложенности экранов и отделение анимаций от содержимого. Так появился на свет react-native-easy-router.
                        Читать дальше →
                      • Прекрасное настоящее и светлое будущее Scala

                          image

                          Совсем недавно на Хабре появилась статья, которая дает не совсем верное представление о текущем положении вещей в Scala-сообществе. У читателя создается ложное впечатление о застое и загнивании в экосистеме Scala. В этой статье я хотел бы исправить это и рассказать о недавно вышедших новинках и будущих изменениях.

                          В мае 2016 году на конференции Scala Days в Нью-Йорке Мартином Одерски была представлена презентация, описывающая настоящее и будущее языка Scala.
                          Читать дальше →
                        • Пишем свой интерпретируемый шестнадцатиричный язык программирования для QR-кодов

                            Вдохновившись проектом Google Glass, я подумал, как хорошо было бы сделать крайне простой, но мощный инструмент дополненной реальности специально для таких очков. И почему бы не сделать его на основе такой широко используемой технологии как QR-коды. Так родилась задумка языка QuRava — набора байтов, записанных в QR-коде и интерпретируемого в полноценную программу, реализующую часть возможностей языка Java.

                            Хочу сразу предупредить, что все нижеизложенное — альфа-версия, сделано за несколько вечеров. Поэтому по поводу маленьких возможностей сильно не ругайтесь и вопросов про отсутствие лямбда-исчисления не задавайте.

                            Читать дальше →
                          • Тачскрин клавиатуре не брат, мышь тачскрину не сестра

                              Совсем недавно на Хабре появилась новость о выходе культового Carmageddon под мобильные устройства. Поиграв в него, я понял, что это первые гонки под Андроид с управлением, которое мне действительно нравится. Все, что я видел до этого, было кошмаром, преследовавшим меня по ночам. После долгих размышлений на тему :«Почему управление во многих мобильных неказуальных играх такое убогое», я наконец понял, что люди разрабатывающие его, не до конца осознают уникальность тачскрина как платформы, а частично или иногда даже полностью копируют управление с клавиатуры или на худой конец с джойстика.

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

                              1. Правило двух больших пальцев


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

                              Читать дальше →
                            • Все самое главное для очередного «убийцы Angry Birds»

                                У меня есть хобби — я разрабатываю мобильные казуальные игры. Поэтому мне часто приходится подвергать анализу хиты из топов Google Play и AppStore, клонировать удачные решения и не допускать чужих ошибок. В результате я выявил у всех самых хитовых игр некоторые сходные черты в геймплее и управлении. В этом посте я изложу свои наблюдения о том, что именно делает игру популярной, и как это лучше реализовать.



                                1. Геймплей


                                Главные сходства игрового процесса таких хитов рынка мобильных игр, как Angry Birds, Ninja Jump, FruitNinja, Rope'n'Fly, Doodle Jump — простота и однообразие. Минимум действий и постоянное их повторение.

                                а) Лёгкость прохождения

                                Все самые популярные игры крайне легки в прохождении или собственно в самом процессе игры. Эта одна из главных причин их бешеного успеха. Большинство владельцев телефонов и планшетов — обычные люди, они не считают интересным пяток раз на выходных перепройти Марио или Battletoads. Также помните причины, по которым люди играют в мобильные игры. Причины эти — скука и усталость. Люди сидят на работе, на скучных лекциях, едут в метро, и вполне логично у них возникает желание поиграть. Поэтому ни в коем случае нельзя делать огромные сложности в играх — скучающие не получат веселья (девиз Dwarf Fortress «Проигрывать — это весело» здесь не прокатит), а уставшие от сложностей на работе не станут вкладывать кучу сил ещё и в какую-то игрушку.
                                Подробнее