?

Log in

Алексей Махоткин [entries|archive|friends|userinfo]
Alexey Mahotkin

[ website | Алексей Махоткин: домашняя страница ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Links
[Links:| Mircea Eliade | Букинистические магазины Москвы ]

баги в гугле [Oct. 15th, 2010|07:08 pm]
Alexey Mahotkin
господа,

есть вот например баг в гугле (конкретно, в Google Docs). Достаточно существенный (ссылка "RSS feeds: View feed of all documents" ведет на перманентный 401 Authorization Required). Псевдо-тикет в гугловом саппорте есть, там куча страдальцев. Я так понимаю, ничего не делается.

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

Shibboleet! (http://xkcd.com/806/)
link7 comments|post comment

#2синг [Oct. 6th, 2010|04:33 pm]
Alexey Mahotkin
[music |mylene farmer]

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

которую она откуда-то должна знать

мне кажется, это один из возможных шагов машины к осознанию
link6 comments|post comment

eventual consistency [Jun. 22nd, 2010|09:38 pm]
Alexey Mahotkin
[mood |accomplishedaccomplished]

http://sourceforge.net/tracker/?func=detail&atid=350001&aid=450121&group_id=1

смотрим на время заведения тикета, его описание и время первого (и единственного) комментария
link5 comments|post comment

(no subject) [Jun. 3rd, 2010|07:11 pm]
Alexey Mahotkin
http://top.rbc.ru/society/03/06/2010/416032.shtml

Сегодня, 3 июня, во Франции на 73 году жизни скончался выдающийся российский математик Владимир Арнольд.
link1 comment|post comment

(no subject) [Apr. 20th, 2010|11:09 pm]
Alexey Mahotkin
господа,

гм, не мог бы кто-нибудь объяснить человеческими словами, что такое CQRS (Command-Query Responsibility Segregation)?
link16 comments|post comment

об именовании переменных [Apr. 5th, 2010|08:39 pm]
Alexey Mahotkin
я рассказывал эту историю разным людям, и видимо пора её наконец опубликовать (финальным толчком послужил вот этот пост). так как я лишь "стоял рядом", то может оказаться, что часть этой истории или она вся целиком является исключительно плодом моего воображения. ну да непосредственные участники щас меня в комментах поправят, whatever.

в начале нулевых я начинал свою карьеру веб-разработчика в прекрасном стартапе E-Labs. Помимо прочего, небезызвестный многим С. работал над проектом под условным названием "межгалактический бордель". Это был веб-интерфейс к эскорт-агентству. Барышни стоили от косаря грина в час, базировались в Словении (?) и вылетали самолетом куда скажете.

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

Бизнес заказчика рос тоже, и в какой-то момент пришло очередное задание: теперь агентство предоставляло также эскортных юношей.

Так в таблице girls появилось поле "пол".
link9 comments|post comment

(no subject) [Mar. 13th, 2010|12:58 am]
Alexey Mahotkin
две важные истории

а) http://en.wikipedia.org/wiki/Alexander_Grothendieck#Retirement_into_reclusion


In January 2010, Grothendieck wrote a letter to Luc Illusie. In this "Declaration d’intention de non-publication", he states that essentially all materials that have been published in his absence have been done without his permission. He asks that none of his work should be reproduced in whole or in part, and even further that libraries containing such copies of his work remove them.


б) из предисловия к „Invincible”

As a rule players have been referred to by one name throughout to avoid confusion, though in fact go players in Edo period (and even now) changed their names at different stages of their carriers. [...] The sole exception to the `one name' rule is the player who appears in this book as Kadono Tadazaemon, Mizutani Junsaku, and Inoue Shutetsu — he set a record for name-changing (and incidentally developed schizophrenia). At various stages in his career he was known as Todani Umetaro, Dowa, Kadono Tadazaemon, Mizutani Junsaku, Inoue Shutetsu, the 12th Inoue Inseki, and, in retirement, Setsuzan. Such extraordinary nomenclatural ficklessness seemed to deserve recognition.
link9 comments|post comment

(no subject) [Feb. 27th, 2010|01:29 am]
Alexey Mahotkin
http://www.scribd.com/doc/27168812/Oh-Shit-How-to-Break-a-Large-Website-and-how-not-to-PDF-version

ведущий инженер Scribd делится советами и рекомендациями, посвященными тому, как не уронить крупный сайт на рельсах.

особенный интерес представляет слайд номер 40 (priceless!)
linkpost comment

(no subject) [Feb. 26th, 2010|12:13 pm]
Alexey Mahotkin
[Tags|]

официальная копипаста follows

Вышел в свет четвертый выпуск журнала «Практика функционального программирования».

Очередной «профессией» куклы Барби будет инженер-компьютерщик, и длинноногие девушки-хакеры перестанут быть героями голливудских фильмов, а станут частью повседневной реальности.

На кофточке Барби изображен компьютер, на экране которого изображена Барби. А на экране ноутбука — двоичный код, который можно преобразовать в последовательность ASCII-символов «BarbieBarbieBarbieBar». Это рекурсивные конструкции и бесконечные списки — понятия, традиционно ассоциируемые с функциональным программированием.

Вывод напрашивается сам собой: если вы хотите иметь общие темы для разговора с девушками, которые через каких-то 5-7 лет будут писать приложения на OCaml и Erlang за соседним с вами столом, читайте наш журнал!



Каждая статья снабжена своей собственной записью в сообществе [info]fprog, чтобы можно было обсуждать их независимо.
  1. Лисп — абстракции на стероидах. Виталий Маяцких.
  2. Clojure, или «Вы все еще используете Java? тогда мы идем к вам». Алекс Отт.
  3. Пределы выразительности свёрток. Виталий Брагилевский.
  4. Сечения композиции как инструмент бесточечного стиля. Денис Москвин.
  5. Мономорфизм, полиморфизм и экзистенциальные типы. Роман Душкин.


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

Также не забудьте посетить страницу лучших друзей журнала: http://fprog.ru/donate/.
linkpost comment

(no subject) [Feb. 23rd, 2010|09:30 pm]
Alexey Mahotkin
Сегодня был год с момента операции (и чуть больше года с момента переезда.

Это типа круто, и если бы не кое-кто, ничего бы этого не было.
link10 comments|post comment

(no subject) [Dec. 21st, 2009|01:26 pm]
Alexey Mahotkin


Вышел третий номер журнала «Практика функционального программирования».

В номере:

  • «Рекурсия + мемоизация = динамическое программирование». Дмитрий Астапов
  • «Проектирование Erlang-клиента к memcached». Лев Валкин
  • «Как построить Google Wave из Erlang и Tcl при помощи OCaml». Дмитрий Астапов, Алексей Щепин
  • «Полиморфизм в языке Haskell». Роман Душкин
  • и душераздирающий труд «Элементы функциональных языков». Евгений Кирпичёв


все опечатки мои, потому как я там корректор
link9 comments|post comment

(no subject) [Dec. 19th, 2009|06:16 pm]
Alexey Mahotkin
касательно фильма "Пределы контроля":

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

роскошные костюмы, отказ от секса, формальность коммуникаций -- это и есть контроль. единственный раз (до получения терминальной пустой команды) он выходит из себя, когда чуть не срывается установка маяка "я готов к приёму очередной команды" (двойной эспрессо, означающий XOFF) -- ну тут эволюционный инстинкт сработал.
linkpost comment

(no subject) [Dec. 10th, 2009|01:34 pm]
Alexey Mahotkin
очередная лекция по матану

http://community.livejournal.com/ru_declarative/90389.html
linkpost comment

(no subject) [Dec. 4th, 2009|01:58 am]
Alexey Mahotkin
http://mickey-mauser.diary.ru/p87447122.htm

http://zhzhitel.livejournal.com/165404.html

уникальное будет произведение! завязка такая:

"четыре хабалки живут в одной квартире. ВНЕЗАПНОСТЕ в соседнюю квартиру въезжает пятая хабалка."
link1 comment|post comment

(no subject) [Nov. 29th, 2009|09:45 pm]
Alexey Mahotkin
Update: confirmed.
link1 comment|post comment

(no subject) [Nov. 28th, 2009|09:40 pm]
Alexey Mahotkin
во втором вагоне ехал коллега

аэрофобия у человека

известий нет
link5 comments|post comment

(no subject) [Nov. 25th, 2009|02:27 pm]
Alexey Mahotkin
http://www.vzsar.ru/news/2009/11/25/umer_dmitriy_tolmackiy.html

Толмацкий умер от гриппа

у меня просто нет слов

я только хотел ему отправить наконец этот несчастный Aryan Aquariums

R.I.P.
link1 comment|post comment

(no subject) [Nov. 25th, 2009|01:40 am]
Alexey Mahotkin
"Рождественская история" (мы, конечно же, смотрели в 3D-варианте) снята чрезвычайно близко к тексту -- к счастью я как раз пару месяцев назад прочитал собственно произведение. Некоторые моменты, мне кажется, современный зритель даже не до конца понимает -- те же самые работные дома, что это такое?

гибкость мультипликационной среды используется на полную, с мучительными порой эффектами augmented reality (все эти полупрозрачные полы). Вообще, дух прошлого -- это явно что-то из постэффектов психотерапии. Дух настоящего -- видимо, ФЭА. Дух будущего -- жёсткие диссоциативы, плюс совершенно шаманистические проходы типа момента про сдирание плоти с костей.

Не говоря уж про встречу с доппельгангером, к тому же мёртвым.

В общем, кино интересное.
link2 comments|post comment

(no subject) [Nov. 16th, 2009|09:10 pm]
Alexey Mahotkin
Козявку забрали.

хороший котик будет, быстрый
linkpost comment

(no subject) [Nov. 15th, 2009|01:19 am]
Alexey Mahotkin
http://cheval-academiq.livejournal.com/71550.html

пользуясь освободившимся местом в квартире, захостил у себя этого пусечку.

ему нужен хозяин
котёнок совсем мелкий
пешите!

найти бы того кто его выгнал и уебать
link5 comments|post comment

(no subject) [Nov. 9th, 2009|06:25 pm]
Alexey Mahotkin


ALL HAIL MONADIC FAIL
link1 comment|post comment

(no subject) [Nov. 8th, 2009|04:26 pm]
Alexey Mahotkin
Кирпичёв правильно пишет про небрежность интуитивного понимания императивных языков: http://antilamer.livejournal.com/300607.html.
 
Однако, мне кажется, что важно было бы озвучить, что всё то, что сейчас скрывается под именем "монада" -- само по себе достаточно спутанно в плане педагогики и евангелизма.  Классическая шутка SPJ/Вадлера звучит как "нам следовало назвать ЭТО warm fuzzy things, чтобы не пугать людей теоркатом".  Шутка поразительно недальновидная.   Проблема лежит в той же плоскости, что и называние стоящих перед тобой задач словом "stuff" (это то, с чем борется Аллен в своём GTD).  
 
Монады в настоящий момент являются миру как сложный ком из исторически обусловленных причин, проблем, решений, технических возможностей и теоретических основ (как алгебраических, так и аспектов теории вычислений). 
 
Все эти наслоения можно (и нужно) расщепить в первом приближении так (порядок приблизительно случайный):
 
  • стремление к экспликации эффектов (чистое внедрение императивно-подобных моментов в вычисление), (см. труды Вадлера);  здесь мы включаем ввод-вывод, STM, параллельные вычисления и проч.)
  • удобный механизм для материализации базовых микро-стратегий вычисления -- вызов функции (call-by-name/call-by-value), многозначность, смена состояния (присваивания!), обработка исключений, останов при неудаче, continuations, бэктрекинг;
  • typeclasses как механизм внесения монад в язык, и как следствие -- удобный механизм для мета-перехвата вычисления (невероятно удобно для domain-specific embedded languages);
  • строгая проверка типов, проистекающая из использования typeclasses, и позволяющая механически проверять корректность использования объектов;
  • существование монадических законов, в которые укладываются монады, что позволяет материализовывать абстрактные комбинаторы; это позволяет находить порой неожиданные изоморфизмы между различными предметными областями, а также помогает при оптимизации и верификации программ;
  • проработанная теоретическая основа (теория категорий), на которой базируются монады; это облегчает жизнь создателям базовых библиотек, на которых потом базируется всё реальное программирование;
  • монады -- лишь один из классов в длинной цепочке интересных алгебраически обусловленных классов, некоторые из которых слабее монад, а некоторые -- сильнее: Functor, Applicative, Monoid, Traversable, Foldable, Monad со товарищи, Arrow со товарищи;
  • стремление к материализации некоторых видов вычислений в алгебраическую структуру (моноидальные вычисления); это открывает широкий простор для оптимизаций, верификации программ, создания абстрактных комбинаторов, а также устранение unbounded recursion -- по мощности результатов это похоже на то, как когда-то ввод-вывод был надежно изолирован в IO Monad;
  •  

Потратим по паре абзацев на каждый пункт.
 
Экспликация эффектов. Clean первым (ЕМНИП) справился с тем, чтобы уложить ввод-вывод в экосистему чистого ленивого языка.  Ввод-вывод -- лишь первый эффект, с которым справились таким образом.  Сейчас всё, что не укладывается в чистоту и ленивость, оформляется в виде эффектов: транзакции (и их взаимодействие с вводом-выводом), генераторы случайных чисел, синхронизация при параллельных вычислениях).    Кроме того, что связано с внешним миром, сюда также идут вычисления, которые не укладываются в родную семантику языка -- например, строгое вычисление аргументов функций (как во всех императивных языках).
 
Эффекты позволяют беспокоиться только о четком ограниченном подмножестве проблемы, ведь всё что вне эффектов -- это очень "простые" вещи, которые не могут "навредить" -- там нет deadlocks, там не надо думать о барьерах и порядке вычисления.  Чудовище, таким образом, загоняется в клетку.
 
См. 1. SPJ "Beautiful concurrency" http://www.ece.iastate.edu/~pjscott/beautiful.pdf
2. Wadler "The essence of functional programming" http://mynd.rinet.ru/~alexm/monads/essence.pdf
4. Киселёв et al. "Purely Functional Lazy Non-deterministic programming" http://www-ps.informatik.uni-kiel.de/~sebf/pub/icfp09.html
 
Базовые микро-стратегии вычисления.  Не забываем, что люди, стоявшие у истоков Haskell, в первую очередь были заинтересованы в программировании самого компилятора.  С помощью монад можно эксплицировать все базовые процессы, происходящие при вычислении -- вызовы функций с разными методами передачи аргументов, лексическую и динамическую вложенность переменных (Env), обработку исключений, выразить присваивание через машину состояний (State), неоднозначные вычисления (amb/List), вычисления с неудачей (Maybe/Error), continuations (Cont), бэк-трекинг. 
 
Отдельной областью исследований были также модульные интерпретаторы, реализованные через монады и сопутствующие monad transformers. Такая конструкция позволяла конструировать интерпретатор нужного языка (например, арифметика + вызов функций + неоднозначность) простым комбинированием отдельных компонентов интерпретатора.   Каждый отдельный компонент изолирован от остальных и позволяет раздельную разработку.
 
Понятно, что такой подход позволяет один раз написать соответствующий блок, проверить его, и использовать для любой задачи, требующей создания интепретатора или даже компилятора).
 
См. 1. Guy L. Steele Jr. "Building Interpreters by Composing Monads", http://mynd.rinet.ru/~alexm/monads/steele.pdf
2. S. Liang, P. Hudak "Modular Denotational Semantics for Compiler Construction" http://mynd.rinet.ru/~alexm/monads/liang2.pdf
3. S. Liang, P. Hudak "Modular Monadic Semantics", 1998 http://flint.cs.yale.edu/trifonov/cs629/modular-monadic-semantics.pdf

Механизм для мета-перехвата вычислений.  Монады в Haskell реализуются через typeclasses, которые чем-то похожи то ли на interfaces в Яве, то ли на concepts в C++.   Typeclasses совершенно ортогональны монадам!   Typeclasses позволяют "перехватить" вычисление в другой тип результата.   

Например, можно написать на Haskell функцию для вычисления корней квадратного уравнения.  Её можно вычислить, передав ей три аргумента -- тогда она вернет пару корней.   С помощью typeclasses можно "вычислить" эту функцию в другом контексте так, что результатом вычисления будет код на JavaScript, который представляет собой JavaScript-функцию, вычисляющую корни квадратного уравнения.    

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

Активно развивающейся областью сейчас является написание DSL для параллельных вычислений.  Можно написать на Haskell векторизованный алгоритм, к котором потом написать ряд бэкендов: для SSE, для CUDA, для обычного C, для любой другой векторизующей технологии, которая ещё не появилась.   Естественно, алгоритм этот можно попросту вычислять прямо из Haskell, чтобы отлаживать его принципиальную корректность.

См. 1. презентацию Lennar Augustsson "Strongly Types DSEL"  http://www.infoq.com/presentations/Strongly-Typed-DSEL-Lennart-Augustsson (в конце идёт рассказ о языке для генерации Excel-файлов); PDF
 
 
 
Монадические законы, теоретические основы, младшие и старшие братья монад.  Обеспечивают возможность формально доказать некоторые базовые вещи, чтобы быть хоть сколько-то уверенным в том, что фундамент не подведет.  Это интересно не только авторам самых базовых библиотек, но и тем, кто добрался до задач с такой сложностью, когда каждая возможность автоматической самопроверки приветствуется с энтузиазмом.  
 
Вместе со строгой проверкой типов это позволяет ловить ситуации, когда задача недопонята, сформулирована противоречиво, или просто сложнее, чем кажется.  Также это позволяет развивать программу, резко снижая вероятность внесения ошибочных изменений.   Так, Galois в своей презентации говорят, что постоянно пытаются закодировать те или иные требования к коду в виде сигнатуры типов.  

Также формальная структура (в том числе в моноидальном стиле) открывает широкий простор для оптимизаций на уровне компилятора (в том числе, управляемых программистом через механизм rules).  Некоторые жёстко структурированные функции удаётся соптимизировать максимально близко к машинному коду, при этом не жертвуя абстрактностью исходного кода.
 
 
2. http://comonad.com/reader/2009/iteratees-parsec-and-monoid/  (моноидальный стиль)
 
3. http://www.cse.unsw.edu.au/~dons/papers/CLS07.html (dons et al. "Stream Fusion: From Lists to Streams to Nothing at All)
 
link43 comments|post comment

(no subject) [Nov. 3rd, 2009|12:27 am]
Alexey Mahotkin
[music |The Doors "Riders on the storm"]

записал как есть в семь утра в полусне

Read more...Collapse )
linkpost comment

navigation
[ viewing | 23 entries back ]
[ go | earlier/later ]